我为每个群集项目使用动态图标,因此我有特殊的图标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())
}
}
在我的情况下,某些图标仍然是默认设置,但有时放大图标会发生变化。问题在于,此代码不适用于每个群集项目,在缩放更改后的群集图标也更改后,它可能会呈现我的自定义图标并可能使用默认值。
答案 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