Google 地图 Android 集群 OnCameraChangeListener() 已弃用

Google Maps Android Clustering OnCameraChangeListener() deprecated

使用教程 here,我在我的 Android 应用程序中成功实现了集群。由于 OnCameraChangeListener() 现在已在 com.google.android.gms:play-services:9.4.0 中弃用,是否有新的方法来实现下面的部分?

private ClusterManager<MyItem> mClusterManager;
googleMap.setOnCameraChangeListener(mClusterManager);

编辑:

我试过直接用 setOnCameraMoveListener 替换 setOnCameraChangeListener

googleMap.setOnCameraMoveListener(mClusterManager);

这不起作用,因为 setOnCameraMoveListener() 需要 class OnCameraMoveListener 的对象。转换 mClusterManager 也不起作用。

googleMap.setOnCameraMoveListener((GoogleMap.OnCameraMoveListener) mClusterManager);

根据文档,此界面已被弃用,取而代之的是您可以使用的更精细的选项。

This interface was deprecated. Replaced by GoogleMap.OnCameraMoveStartedListener, GoogleMap.OnCameraMoveListener and GoogleMap.OnCameraIdleListener. The order in which the deprecated onCameraChange method will be called in relation to the methods in the new camera change listeners is undefined.

建议使用新引入的四个摄像头侦听器(OnCameraIdleListenerOnCameraMoveListenerOnCameraMoveStartedListenerOnCameraMoveCanceledListener),但如果您仍然想使用setOnCameraChangeListener 使用特定版本的 android-maps-utils(如下所示)

compile 'com.google.maps.android:android-maps-utils:0.4.3'

在您的模块级别 gradle 文件中。如果您想实施新方法,请检查 答案。

您需要使用

gooleMap.setOnCameraIdleListener(mClusterManager);

而不是

googleMap.setOnCameraMoveListener(mClusterManager);

您可以搜索ClusterManager的源代码,您会看到ClusterManager实现了新的OnCameraIdleListener。

您还需要更新到新的 android-maps-utils:0.4.4

(compile 'com.google.maps.android:android-maps-utils:0.4.4')

祝你好运并投票...;-)