在Android的谷歌地图V2缩放级别监听器(zoom level listener in goog

2019-07-17 10:51发布

我正在开发一个应该使用谷歌地图V2的Android应用程序。 现在,我被困在当地图的缩放级别已经改变了寻找。 谁能帮我?先谢谢了。

Answer 1:

制定实施的OnCameraChangeListener ,并通过它的一个实例来setOnCameraChangeListener()你的GoogleMap 。 你的听众应该叫onCameraChange()每当用户改变缩放,中心或倾斜。 你发现从该新的缩放级别CameraPosition您传递的对象。



Answer 2:

如果你正在寻找如何确定缩放级别,从以前的缩放级别改变,这里是我建议:

定义一个实例变量保留以前的缩放级别的轨迹:

//Initialize to a non-valid zoom value
private float previousZoomLevel = -1.0f;

另外,定义一个实例变量,让你知道,如果地图缩放:

private boolean isZooming = false;

当您设置您的GoogleMap的实例,给它一个OnCameraChangeListener ...

//mMap is an instance of GoogleMap
mMap.setOnCameraChangeListener(getCameraChangeListener());

现在,定义将确定缩放级别已经改变了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;
        }
    };
}

现在,你可以检查isZooming知道,如果你正在改变缩放级别的值。

请务必设置

isZooming = false;

你已经完成后的任何行动依赖于知道,如果地图被放大。



Answer 3:

由于以前的答案是基于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);
        }
    }
});


文章来源: zoom level listener in google maps v2 in android