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?
- Android MapView se superpone a DrawerLayout
- Obtener la lista de lugares que rodean la ubicación actual del usuario
- Cómo manejar el evento onTouch para el mapa en Google Map API v2?
- Android: la clave de API sólo se puede especificar una vez duplicados <meta-data>
- ¿Cómo expandir el marcador de superposición en Google Maps?
- Google Maps Android: el mapa ya no se muestra después del cambio del almacén de claves
- Dibujo de formas en Android MapView independientemente del nivel de zoom
- Android - Google Map en + -180 de longitud y 90 de latitud
- ¿Consigue la distancia entre dos ubicaciones en android?
- ¿Es posible crear una aplicación de navegación GPS turn-by-turn en Android con Google Maps?
- Maps api v2 android Mi ubicación no funciona en 2.3.3
- Cómo cambiar la Barra de Acción al tocar el mapa como Uber
- Android - Cómo lanzar la intención del mapa de Google en la aplicación android con cierta ubicación, nivel de zoom y marcador
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