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

我正在开发一个本应该使用Google Maps v2的Android应用程序。 现在,我一直在寻找地图的缩放级别发生变化。 任何人都可以帮助我?提前致谢。

Solutions Collecting From Web of "在谷歌地图V2中的缩放级别监听器"

创build一个OnCameraChangeListener的实现,并将其实例传递给你的GoogleMap setOnCameraChangeListener() 。 每当用户更改缩放,中心或倾斜时,都应使用onCameraChange()调用监听器。 您从传递的CameraPosition对象中找出新的缩放级别。

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

定义一个实例variables来跟踪以前的缩放级别:

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

另外,定义一个实例variables,让你知道地图是否缩放:

 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; 

在完成任何依赖于知道地图是否缩放的动作之后。

由于以前的答案是基于OnCameraChangeListener ,这是不赞成使用 ,这个答案是基于相机setOnCameraMoveListener

在这个例子中,我改变我的地图types,当用户改变缩放(使用控制或手指和缩放)。 如果缩放级别高于18.0,则地图types更改为MAP_TYPE_HYBRIB ,如果低于18.0,则地图types更改为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); } } });