Android MapView – автоматическое масштабирование до тех пор, пока не будут видны все ItemizedOverlay

Hardcoding setZoom () внутри onCreate () чувствует себя очень устаревшим, и я хотел бы улучшить пользовательский интерфейс, сначала имея MapView, установите масштаб, пока все объекты GeoPoints / OverlayItems не будут видны на карте.

Как это можно сделать автоматически?

Как это похоже

int minLat = Integer.MAX_VALUE; int maxLat = Integer.MIN_VALUE; int minLon = Integer.MAX_VALUE; int maxLon = Integer.MIN_VALUE; for (GeoPoint item : items) { int lat = item.getLatitudeE6(); int lon = item.getLongitudeE6(); maxLat = Math.max(lat, maxLat); minLat = Math.min(lat, minLat); maxLon = Math.max(lon, maxLon); minLon = Math.min(lon, minLon); } mapController.zoomToSpan(Math.abs(maxLat - minLat), Math.abs(maxLon - minLon)); mapController.animateTo(new GeoPoint( (maxLat + minLat)/2, (maxLon + minLon)/2 )); 

edit: Райан дал хорошее предложение: поместить прокладку, чтобы часть точки не лежала по краям (спасибо Райан!)

 double fitFactor = 1.5; mapController.zoomToSpan((int) (Math.abs(maxLat - minLat) * fitFactor), (int)(Math.abs(maxLon - minLon) * fitFactor)); 

Для этого нет волшебного способа. Я предлагаю повторить все ваши наложения, чтобы получить центр и промежуток всех этих элементов. Затем установите центр и пролет соответственно для карты