Я использую Google Maps V2 SDK для Android, чтобы отображать большое количество маркеров на карте. Чтобы улучшить взаимодействие с пользователем, я нашел его функциональность кластеризации очень полезной. Каждый раз, когда я нажимаю на маркер кластера, масштаб карты увеличивается, и кластер расширяется. Вот как я это делаю:
this.clusterManager?.setOnClusterClickListener {
val builder = LatLngBounds.builder()
for (item in it.items) {
builder.include(item.position)
}
try {
map?.animateCamera(CameraUpdateFactory.newLatLngBounds(builder.build(), 100))
} catch (e: Exception) {
Logger.e(e.message)
}
true
}
Все работает, но я указал, что уровень масштабирования слишком высок; Если я попытаюсь ущипнуть карту, уровень масштабирования уменьшится, а элементы не сгруппируются. Поэтому я думаю о том, что было бы наилучшим способом найти минимальный уровень масштабирования (на основе совокупности кластеров), необходимый для достижения эффекта увеличения масштаба. Вот небольшой пример: