Calcular el nivel de zoom para Google Map para dos valores de LatLong

Estoy usando com.google.android.gms.maps.GoogleMap en SherlockFragmentActivity .

El código XML es el siguiente:

  <fragment android:id="@+id/map" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="fill_parent" android:layout_height="150dip" /> 

int zoomLevel = ? // Cómo puedo calcular el nivel de zoom para dos diferentes valores latlong como android map v3 necesita decir nivel de zoom como int

 map.setZoom(zoomLevel); 

Tengo valores de inicio y destino como com.google.android.gms.maps.model.LatLng

LatLng inicio, fin;

Estoy agregando un pligon como GoogleLocation.addPolyLineOnGMap(mMap, startPoint, endPoint, startMarker, endMarker)

Mi problema es cómo puedo calcular el nivel de zoom para el mapa de Google para que pueda mostrar ambos marcador correctamente en el mapa.

2 Solutions collect form web for “Calcular el nivel de zoom para Google Map para dos valores de LatLong”

Use LatLngBounds.Builder añadir todos los límites en él y construirlo, a continuación, crear el objeto CameraUpdate y pasar los límites en él updatefactory con relleno. Utilice este objeto CameraUpdate para animar la cámara del mapa.

 LatLngBounds.Builder builder = new LatLngBounds.Builder(); for (Marker m : markers) { builder.include(m.getPosition()); } LatLngBounds bounds = builder.build(); int padding = ((width * 10) / 100); // offset from edges of the map // in pixels CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding); mMap.animateCamera(cu); 

Para mí, necesito calcular el acercamiento para la disposición inicial del mapa por GoogleMapOptions , así que usar LatLngBounds.Builder no trabajaría y no optimized. Así es como calculo el zoom basado en las coordenadas noreste y suroeste de una ciudad

Es la referencia aquí y esta respuesta , simplemente puede poner el código a continuación en su clase de ayuda:

 final static int GLOBE_WIDTH = 256; // a constant in Google's map projection final static int ZOOM_MAX = 21; public static int getBoundsZoomLevel(LatLng northeast,LatLng southwest, int width, int height) { double latFraction = (latRad(northeast.latitude) - latRad(southwest.latitude)) / Math.PI; double lngDiff = northeast.longitude - southwest.longitude; double lngFraction = ((lngDiff < 0) ? (lngDiff + 360) : lngDiff) / 360; double latZoom = zoom(height, GLOBE_WIDTH, latFraction); double lngZoom = zoom(width, GLOBE_WIDTH, lngFraction); double zoom = Math.min(Math.min(latZoom, lngZoom),ZOOM_MAX); return (int)(zoom); } private static double latRad(double lat) { double sin = Math.sin(lat * Math.PI / 180); double radX2 = Math.log((1 + sin) / (1 - sin)) / 2; return Math.max(Math.min(radX2, Math.PI), -Math.PI) / 2; } private static double zoom(double mapPx, double worldPx, double fraction) { final double LN2 = .693147180559945309417; return (Math.log(mapPx / worldPx / fraction) / LN2); } 

Creando LatLng simplemente por new LatLng(lat-double, lng-double)

width y height es el tamaño del diseño del mapa en píxeles

  • Mostrar el icono de puntos azules en la ubicación actual Google Maps
  • Cómo obtener límite de velocidad mediante google maps api?
  • Definición de un CameraUpdate con LatLngBounds con diferentes valores de relleno
  • Google Maps no se muestra en el dispositivo Android
  • Mi ubicación y marcador tienen diferentes ubicaciones
  • ¿Cómo cambiar el tipo de mapa de simple a satélite de PlacePicker de la API de Google Places?
  • Google Maps API V2 'Error al cargar mapa. No se pudo contactar con Google Servers, ni siquiera comprobar permiso y keystore
  • Cómo enfocar el marcador de Google por marcador de título?
  • GetSupportFragmentManager (). FindFragmentById (R.id.map) comenzó a devolver null
  • ¿Cómo mostrar pop-up al hacer clic en la superposición de mapa?
  • La superposición de información de tráfico se muestra siempre encima de otras polilíneas en el mapa de google en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.