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,所以我很迷茫:有没有办法回收我的旧代码?

这里有一些参考。

感谢您的帮助。

  • 如何实现一个监听器
  • RecyclerView - 当视图不再可见时callback
  • Android - 事件监听器
  • 适用于应用生命周期的Android事件监听器
  • 如何使用界面来进行两个活动之间的沟通
  • 在键盘上显示或隐藏事件在Android
  • 旧的视图返回时,Android setOnCheckedChangeListener再次调用
  • 在EditText上获取关键事件
  • 在相机更改事件的新模型中, 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文件中。