谷歌地图与集群管理器:不推荐使用 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,无法在谷歌地图中显示信息窗口