2013-05-03 3 views
45

Comment obtenir le niveau de zoom actuel sous la forme d'un entier sur un GoogleMap. Je dois prendre ce code de GMaps V1.1:Google Maps V2 - Android - Obtenir le niveau de zoom actuel

MapView mGoogleMapView; 

int zoomLevel = mGoogleMapView.getZoomLevel(); 

Je suis au courant des méthodes getMinZoomLevel() et getMaxZoomLevel() Je ne peux cependant pas trouver quoi que ce soit dans la documentation V2 GMap Android qui donnera le courant le niveau de zoom. Est-ce que quelqu'un a des indications sur la façon de faire cela?

Toute aide serait appréciée.

Répondre

148
GoogleMap map; 

....

float zoom = map.getCameraPosition().zoom; 
+7

Cela doit être fait sur thread d'interface utilisateur, ou vous aurez une exception! –

33

Je pense que OnCameraChangeListener fera l'affaire ..

map.setOnCameraChangeListener(new OnCameraChangeListener() { 

    private float currentZoom = -1; 

    @Override 
    public void onCameraChange(CameraPosition position) { 
     if (position.zoom != currentZoom){ 
      currentZoom = position.zoom; // here you get zoom level 
     } 
    } 
}); 

Mise à jour:

Google Play Service 9.4. 0 OnCameraChangeListener a été dépréciée et il ne fonctionnera plus soon.Alternately ils sont remplacés par OnCameraMoveStarted Listener, OnCameraMoveListener, OnCameraMoveCancel edListener et OnCameraIdleListener.

Par conséquent, nous pouvons utiliser OnCameraIdleListener ici pour obtenir le niveau de zoom actuel de la caméra.

Exemple de code:

map.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() { 
    @Override 
    public void onCameraIdle() { 
     int zoomLevel = map.getCameraPosition().zoom; 
     //use zoomLevel value.. 
    } 
}); 
+1

Cette méthode était obsolète. remplacé par setOnCameraMoveStartedListener (GoogleMap.OnCameraMoveStartedListener), setOnCameraMoveListener (GoogleMap.OnCameraMoveListener), setOnCameraMoveCanceledListener (GoogleMap.OnCameraMoveCanceledListener) et setOnCameraIdleListener (GoogleMap.OnCameraIdleListener). –

+0

@NaszNjokaSr., Merci pour votre préoccupation. Mis à jour en conséquence. – ridoy

+0

N'est-il pas possible dans votre version mise à jour, juste pour utiliser 'map.getCameraPosition(). Zoom'? Pourquoi l'implémentation d'un écouteur est-elle nécessaire? Et avec ce 'onCameraIdleListener' n'obtiendriez-vous pas le niveau de zoom actuel seulement quand la caméra passe en mode inactif? –

Questions connexes