proyecto - set zoom google maps android
nivel de zoom oyente en google maps v2 en android (3)
Estoy desarrollando una aplicación para Android que se supone que usa Google Maps v2. Ahora estoy atascado en encontrar cuándo ha cambiado el nivel de zoom del mapa. ¿Alguien puede ayudarme? Gracias de antemano.
Dado que las respuestas anteriores se basan en OnCameraChangeListener
y que están en deprecated , 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 controles o dedos y haciendo zoom). Si el nivel de zoom cambia por encima de 18.0, el tipo de mapa cambia a MAP_TYPE_HYBRIB
y, si está 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);
}
}
});
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 saber si el mapa está haciendo zoom:
private boolean isZooming = false;
Cuando configura su instancia de GoogleMap, dele un OnCameraChangeListener ...
//mMap is an instance of GoogleMap
mMap.setOnCameraChangeListener(getCameraChangeListener());
Ahora, defina 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 verificar el valor de isZooming para saber si está cambiando los niveles de zoom.
Asegúrate de establecer
isZooming = false;
después de completar cualquier acción depende de saber si el mapa está haciendo zoom.
Cree una implementación de OnCameraChangeListener
y pase una instancia de la misma a setOnCameraChangeListener()
de su GoogleMap
. Su oyente debe ser llamado onCameraChange()
siempre que el usuario cambie el zoom, centro o inclinación. CameraPosition
el nuevo nivel de zoom del objeto CameraPosition
que le pasaron.