android - 使用 google maps utils 从 url 渲染集群图标

标签 android google-maps android-glide markerclusterer android-maps-utils

我为每个集群项目使用动态图标,所以我有特殊的图标 url 和来自 url 的加载标记图标。我使用以下代码:

override fun onBeforeClusterItemRendered(item: T, markerOptions: MarkerOptions?) {

    super.onBeforeClusterItemRendered(item, markerOptions)
try {
    var url = URL("https://cdn3.iconfinder.com/data/icons/places/100/map_pin_big_1-128.png")
    Glide.with(context)
        .asBitmap()
        .load(url)
        .into(object : CustomTarget<Bitmap>() {
            override fun onLoadCleared(placeholder: Drawable?) {
            }

            override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
                markerOptions?.icon(BitmapDescriptorFactory.fromBitmap(resource))
            }

        })

} catch (ex: Exception) {
    Log.e("map", ex.toString())
}

某些图标在我的情况下仍然是默认图标,有时在放大缩小图标后会发生变化。问题是这段代码不适用于每个集群项目,缩放更改集群图标也更改后,它可能会呈现我的自定义图标并可能使用默认图标。

enter image description here

enter image description here

最佳答案

你只需要把所有这些东西都放进去

protected void onClusterItemRendered(T clusterItem, Marker marker) {
...
}

在 onBeforeClusterItemRendered 中,您在异步回调中设置了 MarkerOptions 上的图标。这时候就可以加到 map 上,成为真正的Marker了。所以你的图标将被设置为已经无用的对象。

这就是为什么你需要在 onClusterItemRendered 中做这件事

唯一要改变的区别:

markerOptions?.icon(BitmapDescriptorFactory.fromBitmap(resource))

到:

marker.setIcon(BitmapDescriptorFactory.fromBitmap(resource))

引用:Refreshing makers (ClusterItems) in Google Maps v2 for Android

感谢https://stackoverflow.com/users/3252320/stas-parshin

关于android - 使用 google maps utils 从 url 渲染集群图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55825004/

相关文章:

Android 数据库选择查询 - 不显示所有记录

android - 提高谷歌地图绘制长路径的性能

android - 如何在android上调整视频的播放速度?

android - 如何从android应用程序调试共享库[单独的项目]

javascript - 使用选项卡时 InfoWindow 高度不正确

javascript - 地理编码示例应用程序中的空白

android - 无法在 Glide 4.4 上使用 glide-transformations

android - 集成 glide gradle 后应用程序崩溃

android - 如何在 Glide 中的缓存图像上应用动画

android - 如何编写android jUnit功能测试