如何处理群集中的大量ClusterItem - Android GoogleMaps V2

时间:2016-11-02 20:04:40

标签: android google-maps

我正在使用GoogleMapsV2。我有大约10000个集群项目,我批量添加到ClusterManager(ClusterManager.addItems(Collection)。

我的问题是群集和去群集过程滞后且缓慢。我相信大约有1万件物品不应该那么慢。在OnePlus3上测试(6GB或ram)因此不是手机。

以下是活动中的群集关联代码:

import pandas as pd
df = pd.DataFrame(...)

df
        COL1          ....
0   b'entry1'         ...
1   b'entry2'
2   b'entry3'
3   b'entry4'
4   b'entry5'
5   b'entry6'

我查看了ClusterRenderer,我没有在onBeforeClusterItemRendered()和onBeforeClusterRendered()中执行任何大型操作。 看起来应用程序在进行群集时比在去群集时慢得多,但这也可能是因为群集通常在更小的缩放级别上完成,因此会显示更多的标记。

我的android监视器显示聚类过程改变了内存和CPU而不是GPU,所以这不是图形问题。

我试过的解决方案: 像描述here那样进行动态集群渲染。在这种情况下,您遍历标记列表并查看哪些在Viewport边界中,因此您只显示这些标记。这使整个事情变得更糟,因为每次onCameraIdle被调用时我都必须遍历所有10 000个标记。

任何想法从哪里开始优化此问题?

2 个答案:

答案 0 :(得分:1)

你在其他地方使用console.log吗?如果没有,您可以通过以下方式重构代码:

rentMarkerList

因此,您不会创建额外的标记列表,也不能同时添加所有标记,但请逐个添加。

您还可以使用简单的for循环来补充foreach循环。根据这个Android performance patterns episode,它的工作速度更快。

我认为这不会显着改善性能,只是一点点优化提示,这可能有所帮助。

答案 1 :(得分:0)

在ios上使用30K标记散乱后,我刚刚放弃了Google集群管理器,它的性能非常差且根本无法扩展。还有很多其他免费的集群库,只需删除google-utiils。

我已将其交换为ClusterKit-可行! https://github.com/hulab/ClusterKit-(iOS)