У меня есть приложение, которое анализирует файлы gpx и отображает маршруты в MapView. Для карты я использую OpenStreetMap.
Код: Выделить всё
private fun setBoundingBox(points: List) = with(binding){
val latitudes = points.map { it.latitude }
val longitudes = points.map { it.longitude }
val boundingBox = BoundingBox(latitudes.max(), longitudes.max(), latitudes.min(), longitudes.min())
mapView.zoomToBoundingBox(boundingBox, true)
mapView.controller.setZoom(mapView.zoomLevelDouble - 0.5)
mapView.invalidate()
}
Мне нужно отодвинуть карту на масштаб BoundingBox - 0,5 (например X-0,5). Метод ZoomToBoundingBox не позволяет этого сделать, потому что он устанавливает для Zoom значение X. Если использовать mapView.zoomLevelDouble — 0.5, то ничего не меняется, Zoom устанавливается в значение X. Если отключить анимацию, все работает, но мне нужна анимация. Я так понимаю, это потому, что ZoomToBoundingBox не завершил анимацию. Если вы дождетесь его завершения и установите mapView.controller.setZoom(mapView.zoomLevelDouble - 0.5), тогда масштаб перескочит (например, 15->14.5->15)
Подробнее здесь:
https://stackoverflow.com/questions/791 ... oundingbox