Escuchar nivel de zoom en google maps v2 en android
Estoy desarrollando una aplicación de Android que se supone que utiliza Google Maps v2. Ahora estoy atascado en la búsqueda cuando el nivel de zoom del mapa ha cambiado. ¿Puede alguien ayudarme? Gracias de antemano.
- La API de Google Maps v2 no funciona
- Mostrar la información personalizada de InfoWindow para Android Maps Utility Library for Android
- Google Maps Android v2 no funciona con ActionBarSherlock Fragment Actividad
- ¿Cómo puedo manejar el cambio de mapa usando Google Maps para Android V2?
- Google Maps API v2 SupportMapFragment dentro de ScrollView - los usuarios no pueden desplazar el mapa verticalmente
- Android error Dx problema salida de escritura: ya preparado Error generando archivo final: Encontró archivo duplicado para APK: classes.dex
- EXCEPCIÓN FATAL: ZoomTableManager
- Google Maps Android API v2 es gratis?
- PlaceAutoCompleteFragment en android no muestra sugerencias y se cierra después de ingresar la primera letra
- 75 marcadores en el mapa -> pérdidas de memoria -> OutOfMemoryException
- Cómo obtener resultados de lugares cercanos desde la ubicación del usuario mediante la API de Google Maps en Android
- ¿Modo nocturno para los mapas de Google?
- Android java.io.IOException: Servicio no disponible
Cree una implementación de OnCameraChangeListener
y pase una instancia de ella a setOnCameraChangeListener()
de su GoogleMap
. Su oyente debe ser llamado con onCameraChange()
siempre que el usuario cambie el zoom, el centro o la inclinación. CameraPosition
el nuevo nivel de zoom desde el objeto CameraPosition
que se pasa.
Si está buscando cómo determinar si el nivel de zoom ha cambiado desde el nivel de zoom anterior, esto es lo que sugeriría:
Defina una variable de instancia para realizar un seguimiento del nivel de zoom anterior:
//Initialize to a non-valid zoom value private float previousZoomLevel = -1.0f;
Además, defina una variable de instancia para que sepa si el mapa está ampliando:
private boolean isZooming = false;
Cuando configure su instancia de GoogleMap, déle un OnCameraChangeListener …
//mMap is an instance of GoogleMap mMap.setOnCameraChangeListener(getCameraChangeListener());
Ahora, defina el OnCameraChangeListener que determinará si el nivel de zoom ha cambiado:
public OnCameraChangeListener getCameraChangeListener() { return new OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition position) { Log.d("Zoom", "Zoom: " + position.zoom); if(previousZoomLevel != position.zoom) { isZooming = true; } previousZoomLevel = position.zoom; } }; }
Ahora, puede comprobar el valor de isZooming para saber si está cambiando los niveles de zoom.
Asegúrese de ajustar
isZooming = false;
Después de haber completado cualquier acción depende de saber si el mapa está haciendo zoom.
Dado que las respuestas anteriores se basan en OnCameraChangeListener
y que está obsoleto , esta respuesta se basa en la cámara setOnCameraMoveListener
.
En este ejemplo, estoy cambiando mi Tipo de mapa cuando el usuario cambia el zoom (usando los controles o los dedos y el zoom). Si el nivel de zoom cambia por encima de 18.0, el tipo de mapa cambia a MAP_TYPE_HYBRIB
y si va por debajo de 18.0, el tipo de mapa cambia a MAP_TYPE_NORMAL
.
googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() { @Override public void onCameraMove() { CameraPosition cameraPosition = googleMap.getCameraPosition(); if(cameraPosition.zoom > 18.0) { googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); } else { googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); } } });
- ¿Es correcta esta explicación sobre VSS / RSS / PSS / USS?
- Cómo utilizar git branch con Android Studio