2013-05-03 114 views
45

如何在GoogleMap上獲取當前縮放級別的整數。我需要從GMaps V1.1驗證碼)Google Maps V2 - Android - 獲取當前縮放級別

MapView mGoogleMapView; 

int zoomLevel = mGoogleMapView.getZoomLevel(); 

我知道的方法getMinZoomLevel()和getMaxZoomLevel(。但是我無法找到Android的GMAP V2文檔中的任何東西,這將使目前的縮放級別。有沒有人有任何關於如何做到這一點的指針?

任何幫助,將不勝感激。

回答

148
GoogleMap map; 

....

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

這必須在UI線程中完成的,否則你會得到一個異常! – 2015-08-18 19:46:01

33

我覺得OnCameraChangeListener將這樣的伎倆..

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

更新:

從谷歌播放服務9.4。 0 OnCameraChangeListener已被棄用,這將不再起作用soon.Alternately它們被OnCameraMoveStarted監聽OnCameraMoveListenerOnCameraMoveCancel edListenerOnCameraIdleListener取代。

因此,我們可以在這裏使用OnCameraIdleListener來獲取相機的當前縮放級別。

代碼示例:

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

此方法已棄用。 由setOnCameraMoveStartedListener(GoogleMap.OnCameraMoveStartedListener),setOnCameraMoveListener(GoogleMap.OnCameraMoveListener),setOnCameraMoveCanceledListener(GoogleMap.OnCameraMoveCanceledListener)和setOnCameraIdleListener(GoogleMap.OnCameraIdleListener)替代。 – 2016-12-20 15:45:04

+0

@NaszNjokaSr。,謝謝你的關注。相應更新。 – ridoy 2017-02-03 06:23:38

+0

是不是可以在你的更新版本,只是使用'map.getCameraPosition()。zoom'? 爲什麼必須實現一個監聽器? 而這個'onCameraIdleListener'只有當相機進入閒置模式時才能獲得當前的縮放級別? – 2017-08-31 18:07:57

相關問題