网址中的Google地图更新群集标记图标

时间:2019-07-18 11:45:55

标签: android google-maps google-maps-markers markerclusterer

我正在使用集群管理器在地图上渲染图钉,所有图钉项目都有其自己的图标网址,我应该从网址设置图标。对于第一个渲染,一切正常。但是我需要在点击事件或其他内容上更新一些标记图标。我有自定义群集渲染器,可以在其中动态设置自定义图标,并且可以正常工作

....

override fun onBeforeClusterItemRendered(item: T, markerOptions: MarkerOptions?) {
    try {
        val pin = item as OfferPinItem
        markerOptions?.icon(getDefaultPinIcon(pin.isClicked, pin.isSelected))
        pin.loadPinIconWithCallback(context, pin.isClicked) {
            markerOptions?.icon(BitmapDescriptorFactory.fromBitmap(it))
        }
        super.onBeforeClusterItemRendered(item, markerOptions)

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

当我只需要更新标记图标时,我使用以下逻辑:

 data.map { pin ->
    pin.isClicked = pin.id == highlightedPin

        if (clusterManager.markerCollection != null) {
            val existingMarker =
                clusterManager.markerCollection.markers.firstOrNull { m -> m.position == pin.getPosition() }
            if (existingMarker != null) {
                updateMarkerIcon(context, existingMarker, pin, pin.isClicked)
            }
    }
    pin
}

调用这些代码后,有时会在点上出现两个图标:(一个位于单击图标之前(默认图标),第二个是活动图标

我也尝试仅调用重新群集图标,但是第二次不调用onBeforeClusterItemRendered:

 clusterManager.clearItems()
    clusterManager.addItems(filteredItems)
    clusterManager.cluster()

0 个答案:

没有答案
相关问题