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:
- El inicio de Backend para móviles subscribeToCloudMessage no funcionará
- No se puede lanzar el proyecto de la biblioteca de Android?
- Compruebe si el usuario está en un bosque utilizando la ubicación
- Android: Google MapView muestra un indicador de progreso mientras se está cargando el mapa
- Android Google Maps No se pudo encontrar el estilo 'mapViewStyle' en el tema actual
<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.
- Error al obtener Google Maps en android
- No se pudo encontrar la clase 'android.app.AppOpsManager', referenciada desde el método com.google.android.gms.common.GooglePlayServicesUtil.zza
- Android Google Maps transparencia
- Buscar ruta con Androids API de Google Maps
- Google Maps Android, detecta la interacción del usuario en un mapa de la ubicación
- Aplicación móvil de Android: mapas interiores, direcciones para caminar
- Google Maps Android: ajustar la polilínea a la calle
- Grupo de mapas de Google con dirección
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
- JSON Parsing funciona en Android 4.0 pero no en Android <4.0
- Android SearchView OnFocusChangeListener: onFocusChange no se llama en absoluto