Google 地图与集群管理器:不推荐使用 onCameraChangeListener

Google Map vs. Cluster Manager: onCameraChangeListener deprecated

我有一个带有大约 500-1000 个标记的 Android 应用程序。我正在使用 android-maps-utils as shown here 中的 ClusterManager 对这些标记进行聚类。

在最新的 Play 服务更新中 Google 更改了 Google 地图的侦听器模型。 OnCameraChangeListener 现在被标记为已弃用。相反,有四个新的侦听器 (OnCameraIdleListener, OnCameraMoveListener, OnCameraMoveStartedListener,OnCameraMoveCanceledListener)。

自那次更新以来,我的应用程序非常慢。它卡在 moving/zooming 地图上,聚类过程很慢,需要几秒钟。

我认为此行为可能与侦听器模型的更改有关。因此,我尝试用新的 addOnCameraIdleListener(clustermanager) 替换 addOnCameraChangeListener(clustermanager) 函数。不幸的是,这不起作用,因为 ClusterManager 没有实现必要的接口。

这就是奇怪的地方,因为 GitHub 上 ClusterManager 的当前版本 (0.4.3) 确实实现了该接口。所以它应该可以工作。

我正在使用 Gradle 导入 ClusterManager:

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

但我的本地版本 ClusterManager 似乎仍然是一个旧版本,它实现了旧版本 OnCameraChangeListener

所以这里出了什么问题? 这是 Gradle 的错误行为吗? 有没有人知道如何解决这个问题? 自上次 Play Services 更新以来,是否还有其他人的 Google Map / Clusterer 运行缓慢且滞后?

感谢您的帮助。谢谢大家。

您需要使用gooleMap.setOnCameraIdleListener(mClusterManager);而不是 googleMap.setOnCameraMoveListener(mClusterManager);

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

您还需要更新到新的 android-maps-utils:0.4.4(编译 'com.google.maps.android:android-maps-utils:0.4.4')

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