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

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

  • Android Google Map V2显示空白并仅显示缩放button?
  • 使用RelativeLayout作为自定义InfoWindow时的NullPointerException
  • 如何在android map api V2中设置animation标记?
  • 自定义infowindow与谷歌地图api v2
  • Android谷歌地图button样式
  • 用getMapAsyncreplacegetMap
  • 将对象与标记(谷歌地图v2)
  • 使用android Google Maps API 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); } } });