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

Posted

技术标签:

【中文标题】谷歌地图与集群管理器:不推荐使用 onCameraChangeListener【英文标题】:Google Map vs. Cluster Manager: onCameraChangeListener deprecated 【发布时间】:2016-12-29 23:32:45 【问题描述】:

我有一个带有大约 500-1000 个标记的 android 应用。我正在使用android-maps-utils 中的 ClusterManager,如图所示 here 来对这些标记进行聚类。

在最新的 Play 服务更新中,Google 更改了 Google Map 的侦听器模型。 OnCameraChangeListener 现在被标记为已弃用。取而代之的是四个新的侦听器 (OnCameraIdleListener, OnCameraMoveListener, OnCameraMoveStartedListener,OnCameraMoveCanceledListener)。

自从更新后,我的应用程序非常慢。它卡在移动/缩放地图上,聚类过程很慢,需要几秒钟。

我认为这种行为可能与侦听器模型的变化有关。因此我尝试用新的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 速度缓慢且滞后吗?

感谢您的帮助。谢谢各位。

【问题讨论】:

【参考方案1】:

你需要使用 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')

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

【讨论】:

现在 4.4 版本的 android-maps-utils 可以正常工作。当我发布这个问题时,只有 4.3 版本可以通过 Gradle 获得(4.4 只是在 GitHub 上)。似乎有人现在提供它。所以,感谢 Max,感谢“某人”。 ;)

以上是关于谷歌地图与集群管理器:不推荐使用 onCameraChangeListener的主要内容,如果未能解决你的问题,请参考以下文章

仅在谷歌地图上呈现可见集群项目的最佳方式

无法单击标记 - 谷歌地图集群Android,无法在谷歌地图中显示信息窗口

如何更改谷歌地图绘图管理器工具栏工具提示?

删除旧地图标记并在集群管理器中加载新标记

集群/去集群后谷歌 iOS 集群管理器“marker.userData”NIL

谷歌地理编码 API 错误消息“不推荐使用无密钥访问谷歌地图平台......”