setminzoompreference - Android MapView: establecer el zoom automáticamente hasta que todos los ItemizedOverlay sean visibles
zoom google maps android api (2)
codificar el setZoom () dentro de onCreate () se siente muy anticuado y me gustaría mejorar la experiencia del usuario al hacer que MapView establezca el zoom hasta que todos los GeoPoints / OverlayItems sean visibles en el mapa.
¿Cómo puede hacerse esto automáticamente?
No hay una manera mágica de lograr esto. Le sugiero que repita todos sus elementos superpuestos para obtener el centro y la extensión de todos estos elementos. A continuación, establezca el centro y el intervalo correspondiente para el mapa
Un poco como esto
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:
Ryan dio una buena sugerencia: poner un relleno para que parte del punto no se acueste (¡gracias Ryan!)
double fitFactor = 1.5;
mapController.zoomToSpan((int) (Math.abs(maxLat - minLat) * fitFactor), (int)(Math.abs(maxLon - minLon) * fitFactor));