2013-05-03 14 views
45

Come ottengo il livello di zoom corrente come numero intero su un GoogleMap. Ho bisogno di prendere questo codice da GMaps v1.1:Google Maps V2 - Android - Ottieni il livello di zoom corrente

MapView mGoogleMapView; 

int zoomLevel = mGoogleMapView.getZoomLevel(); 

Sono consapevole dei metodi getMinZoomLevel() e getMaxZoomLevel() tuttavia non riesco a trovare nulla nella documentazione di Android GMap V2 che darà la corrente livello di zoom. Qualcuno ha qualche indicazione su come farlo?

Qualsiasi aiuto sarebbe apprezzato.

risposta

148
GoogleMap map; 

....

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

Questo deve essere fatto sul thread dell'interfaccia utente, o avrai un'eccezione! –

33

Penso OnCameraChangeListener farà il trucco ..

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 
     } 
    } 
}); 

Aggiornamento:

Da Google servizio 9.4 Gioca. 0 OnCameraChangeListener è stato deprecato e non sarà più lavorare soon.Alternately vengono sostituiti da OnCameraMoveStarted Listener, OnCameraMoveListener, OnCameraMoveCancel edListener e OnCameraIdleListener.

Quindi è possibile utilizzare OnCameraIdleListener qui per ottenere il livello di zoom corrente della fotocamera.

codice di esempio:

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

Questo metodo è stato dichiarato obsoleto. Sostituito da setOnCameraMoveStartedListener (GoogleMap.OnCameraMoveStartedListener), setOnCameraMoveListener (GoogleMap.OnCameraMoveListener), setOnCameraMoveCanceledListener (GoogleMap.OnCameraMoveCanceledListener) e setOnCameraIdleListener (GoogleMap.OnCameraIdleListener). –

+0

@NaszNjokaSr., Grazie per la vostra preoccupazione. Aggiornato di conseguenza. – ridoy

+0

Non è possibile nella tua versione aggiornata, solo per usare 'map.getCameraPosition(). Zoom'? Perché è necessaria l'implementazione di un listener? E con questo 'onCameraIdleListener' non otterresti il ​​livello di zoom corrente solo quando la videocamera entra in modalità inattiva? –

Problemi correlati