OnCameraChangeListener()已被弃用

今天,回头看看我的旧代码,我发现OnCameraChangeListener()现在已经被弃用了。

我发现很难理解如何修复这段代码:

mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { // Cleaning all the markers. if (mGoogleMap != null) { mGoogleMap.clear(); } mPosition = cameraPosition.target; mZoom = cameraPosition.zoom; if (mTimerIsRunning) { mDragTimer.cancel(); } mDragTimer.start(); mTimerIsRunning = true; } }); 

onCameraMove()的新的监听器(又名OnCameraMoveListener() )方法没有CameraPosition cameraPositioninputvariables,所以我很迷茫:有没有办法回收我的旧代码?

这里有一些参考。

感谢您的帮助。

Solutions Collecting From Web of "OnCameraChangeListener()已被弃用"

在相机更改事件的新模型中, CameraPosition不传递给侦听器是正确的。

相反,只要你特别需要它(即移动开始,中间移动,取消或完成/返回到空闲状态),就应该使用getCameraPosition( )。

在play-services-maps 9.4.0版本的API中 ,他们用三个摄像头监听器代替了GoogleMap.OnCameraChangeListener()

  • GoogleMap.OnCameraMoveStartedListener
  • GoogleMap.OnCameraMoveListener
  • GoogleMap.OnCameraIdleListener

根据您的代码,我认为您需要使用GoogleMap.OnCameraIdleListenerGoogleMap.OnCameraMoveStartedListener

 mGoogleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() { @Override public void onCameraMoveStarted(int i) { mDragTimer.start(); mTimerIsRunning = true; } }); mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() { @Override public void onCameraIdle() { // Cleaning all the markers. if (mGoogleMap != null) { mGoogleMap.clear(); } mPosition = mGoogleMap.getCameraPosition().target; mZoom = mGoogleMap.getCameraPosition().zoom; if (mTimerIsRunning) { mDragTimer.cancel(); } } }); 

build议使用新引入的四个摄像机监听器( OnCameraIdleListenerOnCameraMoveListenerOnCameraMoveStartedListenerOnCameraMoveCanceledListener ),但是如果你仍然想使用setOnCameraChangeListener使用特定版本的android-maps-utils (下面给出)

编译“com.google.maps.android:android-maps-utils:0.4.3”

在你的模块级别的gradle文件中。