studio proyecto google developer android google-maps google-maps-mobile google-maps-android-api-2

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.