Google Maps V2-Android-获取当前的缩放级别


72

如何在GoogleMap上以整数形式获取当前缩放级别。我需要从GMaps v1.1中获取以下代码:

MapView mGoogleMapView; 

int zoomLevel = mGoogleMapView.getZoomLevel();

我知道方法getMinZoomLevel()和getMaxZoomLevel(),但是我在Android GMap V2文档中找不到能够提供当前缩放级别的任何内容。有人对如何执行此操作有任何指示吗?

任何帮助,将不胜感激。

Answers:



42

我认为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
        }
    }
});

更新:

自Google Play服务9.4.0起,OnCameraChangeListener已被弃用,很快将不再工作。或者将它们替换为OnCameraMoveStarted‌ListenerOnCameraMoveListenerOnCameraMoveCancel‌edListenerOnCameraIdleListener

因此,我们可以在此处使用OnCameraIdleListener来获取相机的当前缩放级别。

代码样例:

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

3
不推荐使用此方法。由setOnCameraMoveStartedListener(GoogleMap.OnCameraMoveStartedListener),setOnCameraMoveListener(GoogleMap.OnCameraMoveListener),setOnCameraMoveCanceledListener(GoogleMap.OnCameraMoveCanceledListener)和setOnCameraIdleListener(GoogleMap.OnCameraIdleListener)取代。
Nasz Njoka Sr.

@NaszNjokaSr。,谢谢您的关注。相应地更新。
ridoy

仅在使用时,您的更新版本不可能map.getCameraPosition().zoom吗?为什么需要实现侦听器?这样一onCameraIdleListener来,仅当相机进入空闲模式时,您才不会获得当前的变焦级别吗?
Sedat Kilinc

并且看起来zoom值是float而不是int。
tekin beyaz

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.