Получение маркера из ClusterRenderer возвращает ноль для кластеризованного маркераAndroid

Форум для тех, кто программирует под Android
Anonymous
Получение маркера из ClusterRenderer возвращает ноль для кластеризованного маркера

Сообщение Anonymous »

Я пытаюсь выбрать и отменить выбор маркера, используя данные кластера через средство визуализации кластера. Получаю ноль при получении маркера для кластеризованного маркера.

Код: Выделить всё

private fun setMarkerIcon(item: ClusterData) {
val icon = markerIconGenerator.makeIcon()
val bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(icon)
clusterRenderer?.getMarker(item)?.setIcon(bitmapDescriptor) //getting null here
}
Я пробовал использовать менеджер кластеров MarkerCollection и ClusterMarkerCollection. То же самое возвращает ноль для кластеризованного маркера.

Код: Выделить всё

clusterManager.clusterMarkerCollection.markers.find { it.snippet == item.snippet }
?.let { marker ->
////
} ?: run { ////getting here }

clusterManager.clusterMarkerCollection?.markers?.find {  it.snippet == item.snippet }?.let {
////
} ?: run { ////getting here }
DefaultClusterRenderer

Код: Выделить всё

class AppClusterRenderer(
private val context: Context,
map: GoogleMap,
clusterManager: ClusterManager) :
DefaultClusterRenderer(context, map, clusterManager) {

private val clusterIconGenerator = IconGenerator(context)

private val markerIconGenerator = IconGenerator(context)

init {
clusterIconGenerator.setContentView(clusterBinder.root)
clusterIconGenerator.setBackground(null)
markerIconGenerator.setContentView(markerBinder.root)
markerIconGenerator.setBackground(null)
}

override fun onBeforeClusterItemRendered(item: ClusterData, markerOptions: MarkerOptions) {
markerOptions.icon(getMarkerItemView(item))
//getMarkerItemView set needed data and return bitmap
}

private fun getMarkerItemView(item: ClusterData): BitmapDescriptor {
val icon = markerIconGenerator.makeIcon()
return BitmapDescriptorFactory.fromBitmap(icon)
}

private fun getClusterItemView(size: Int): BitmapDescriptor {
clusterBinder.tvCount.text = size.toString()
val icon = clusterIconGenerator.makeIcon()
return BitmapDescriptorFactory.fromBitmap(icon)
}

override fun onClusterItemRendered(clusterItem: ClusterData, marker: Marker) {
super.onClusterItemRendered(clusterItem, marker)
}

override fun getDescriptorForCluster(cluster: Cluster): BitmapDescriptor {
return getClusterItemView(cluster.size)
}

override fun shouldRenderAsCluster(cluster: Cluster): Boolean {
return cluster.size >= 2
}

}
Спасибо за поддержку.

Подробнее здесь: https://stackoverflow.com/questions/790 ... red-marker

Вернуться в «Android»