我正在开发一个应该使用谷歌地图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