在Android中的谷歌地图v2中的缩放级别监听器

Khi*_*mat 38 android google-maps google-maps-mobile google-maps-android-api-2

我正在开发一款应该使用Google Maps v2的Android应用.现在我一直在找到地图的缩放级别发生变化时.任何人都可以帮助我吗?先谢谢.

Dis*_*Dev 50

如果您正在寻找如何确定缩放级别是否已从之前的缩放级别更改,请按以下步骤进行操作:

定义实例变量以跟踪先前的缩放级别:

//Initialize to a non-valid zoom value
private float previousZoomLevel = -1.0f;
Run Code Online (Sandbox Code Playgroud)

另外,定义一个实例变量,让您知道地图是否缩放:

private boolean isZooming = false;
Run Code Online (Sandbox Code Playgroud)

设置GoogleMap实例时,请为其指定一个OnCameraChangeListener ...

//mMap is an instance of GoogleMap
mMap.setOnCameraChangeListener(getCameraChangeListener());
Run Code Online (Sandbox Code Playgroud)

现在,定义将确定缩放级别是否已更改的OnCameraChangeListener:

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;
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

现在,您可以检查isZooming的值以了解您是否正在更改缩放级别.

一定要设置

isZooming = false;
Run Code Online (Sandbox Code Playgroud)

在你完成任何动作后依赖于知道地图是否缩放.

  • 现在已经弃用了. (3认同)

Com*_*are 37

制定实施OnCameraChangeListener,并通过它的一个实例setOnCameraChangeListener()你的GoogleMap.onCameraChange()只要用户更改缩放,居中或倾斜,就应该调用您的监听器.您可以从CameraPosition传递的对象中找到新的缩放级别.

  • 现在不推荐使用setOnCameraChangeListener (13认同)

ᴛʜᴇ*_*ᴛᴇʟ 32

由于之前的答案基于OnCameraChangeListener并且已弃用,因此该答案基于相机setOnCameraMoveListener.

在此示例中,当用户更改缩放(使用控件或手指和缩放)时,我正在更改我的地图类型.如果缩放级别更改为高于18.0,则地图类型将更改为MAP_TYPE_HYBRIB,如果它低于18.0,则地图类型将更改为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);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)