使用Google Maps utils从URL渲染群集图标

时间:2019-04-24 07:56:17

标签: 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

1 个答案:

答案 0 :(得分:2)

您只需要在其中放入所有这些东西

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

在onBeforeClusterItemRendered中,您可以在异步回调中的MarkerOptions上设置图标。这时可以将其添加到地图中并成为真实的标记。因此,您的图标将被设置为已经无用的对象。

这就是为什么您需要在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