android - 谷歌地图与集群管理器 : onCameraChangeListener deprecated

标签 android google-maps-android-api-2 markerclusterer android-maps-utils

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

在最新的 Play Services 更新中,Google 更改了 Google map 的监听器模型。 OnCameraChangeListener 现在被标记为已弃用。相反,有四个新的监听器(OnCameraIdleListener、OnCameraMoveListener、OnCameraMoveStartedListenerOnCameraMoveCanceledListener)。

自那次更新以来,我的应用程序非常慢。它卡在移动/缩放 map 上,聚类过程很慢,需要几秒钟。

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

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

我正在使用 Gradle 导入 ClusterManager:

编译 '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')

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

关于android - 谷歌地图与集群管理器 : onCameraChangeListener deprecated,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096070/

相关文章:

ios - 在 iOS 中自定义标记聚类中的标记图标

android - Android Room 数据库中的@Query Update 不更新主键字段

android - ViewPager : Recursive entry to executePendingTransactions

android - 我如何在非 Activity 课上 toast ?

android - 找不到与代码推送一起使用的 CodePushHash

Android 谷歌地图 onInfoWindowClick 唯一标识标记

android - 将大量轨道绘制到 GoogleMap 时出现 StackOverflow 错误

javascript - 带有 MarkerClusterer 的 Google map 商店定位器库

ios - 带有谷歌地图的 Google-Maps-iOS-Utils 缺少 GMSGeometryUtils.h

Android 谷歌地图 API : Hide Marker Snippet