Android MapView: ajusta el zoom automáticamente hasta que se visualicen todas las opciones de ItemizedOverlay

El setZoom () dentro de onCreate () se siente muy anticuado y me gustaría mejorar la experiencia del usuario inicialmente haciendo que el MapView establezca el zoom hasta que todos los GeoPoints / OverlayItems sean visibles en el mapa.

¿Cómo se puede hacer auto-mágicamente?

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 sugerencia agradable: poner un relleno para que algunos de los puntos no se encuentran en los bordes (gracias Ryan!)

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

No hay manera mágica de lograr esto. Sugiero iterar a través de todos sus elementos de superposición para obtener el centro y el alcance de todos estos elementos. A continuación, ajuste el centro y el span según el mapa

  • Calibración GPS androide
  • Android GPS tarda un tiempo en ser preciso
  • ¿Puede el GPS ser emulado en Android en un teléfono real? (sin emulador)
  • Compruebe si una ubicación GPS está dentro de un cierto radio de otra ubicación GPS en android
  • Cómo obtener coordenadas de una dirección en android
  • Navegación de Google (Android 1.6) intento de devolución de llamada
  • Fused Location API da Lat Inaccurate, Largo cuando traza en el mapa es un poco lejos de la ruta de la carretera, incluso para el valor de baja exactitud
  • Mi algoritmo para calcular la posición del teléfono inteligente - GPS y sensores
  • Método getSupportFragmentManager () no está definido
  • Android - cómo obtener la ubicación del amigo
  • Android getLatitude () devuelve latitud geodésica o geocéntrica?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.