Android: Establecer el nivel de zoom en Google Maps para incluir todos los puntos marcadores
Estoy intentando establecer el nivel de zoom de Maps en android de tal manera que incluya todos los puntos de mi lista. Estoy usando código siguiente.
int minLatitude = Integer.MAX_VALUE; int maxLatitude = Integer.MIN_VALUE; int minLongitude = Integer.MAX_VALUE; int maxLongitude = Integer.MIN_VALUE; // Find the boundaries of the item set // item contains a list of GeoPoints for (GeoPoint item : items) { int lat = item.getLatitudeE6(); int lon = item.getLongitudeE6(); maxLatitude = Math.max(lat, maxLatitude); minLatitude = Math.min(lat, minLatitude); maxLongitude = Math.max(lon, maxLongitude); minLongitude = Math.min(lon, minLongitude); } objMapController.zoomToSpan( Math.abs(maxLatitude - minLatitude), Math.abs(maxLongitude - minLongitude));
Esto funciona a veces. Sin embargo, a veces algunos puntos no se muestran y necesito a continuación, Zoom Out para ver esos puntos. ¿Hay alguna forma de resolver este problema?
- Google Map API V2 - ¿Cómo puedo mantener un marcador en el centro de la pantalla mientras el usuario está desplazando el mapa?
- Android Maps V2: El relleno de polígono desaparece al alejar el zoom
- Mantenga el mapa centrado, independientemente de dónde pinche el zoom en android
- Modo sin conexión para la aplicación de Android con google maps api
- Mapa de MapFragment se carga con lag cuando regrese de otra actividad
- ¿Cómo implementar Google Maps dentro de un fragmento y usar el objeto GoogleMap?
- Npm WARN [email protected] requiere un par de react @> = 15.4.0 pero no se ha instalado ninguno
- Android, ¿Cómo eliminar todos los marcadores de Google Map V2?
- GoogleMaps - llamando a OnPause ()
- Android: Proporcionar autosugestión automática en android coloca Api?
- Google Maps v2 Projection.toScreenLocation (...) muy lento
- Google Maps Fragment no se carga
- Cómo buscar en Google Map Api V2 Android?
Otro enfoque con Android Map API v2:
private void fixZoom() { List<LatLng> points = route.getPoints(); // route is instance of PolylineOptions LatLngBounds.Builder bc = new LatLngBounds.Builder(); for (LatLng item : points) { bc.include(item); } map.moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(), 50)); }
Descubrí la respuesta yo mismo, el nivel de zoom era correcto. Necesito agregar código siguiente para mostrar todos los puntos en la pantalla.
objMapController.animateTo(new GeoPoint( (maxLatitude + minLatitude)/2, (maxLongitude + minLongitude)/2 ));
El punto central no estaba bien alineado creando problema para mí. Esto funciona.
Parte del problema podría ser que MIN_VALUE sigue siendo un número positivo, pero latitudes y longitudes pueden ser números negativos. Intente utilizar NEGATIVE_INFINITY en lugar de MIN_VALUE.
- NPE en ChangeCurrentByOneFromLongPressCommand (en dispositivos Samsung con Android 4.3)
- Android CollapsingToolbarLayout Título de fondo