我正在使用Google地图的群集工具。默认实现非常好,但有很多时候将项目分组到一个集群中,即使它们彼此相距较远。
如何确定项目组合在一起的项目之间的距离?这当然应该根据缩放级别进行更改。
答案 0 :(得分:1)
source code是个好看的地方!根据评论here,
如果它们距离"中心大约100dp,则事物聚集在一起。集群因此,群集中的两个点应该永远不会超过200dp。还要注意,"中心"不是群集的中间,而是选择作为群集种子的标记。这使得算法对添加项目的顺序敏感。来自docs的算法描述 -public static final int MAX_DISTANCE_AT_ZOOM = 100; //基本上是100 dp。
- 按照添加顺序(候选群集)迭代项目
- 创建一个包含项目中心的群集。
- 将距离群集一定距离内的所有项目添加到群集中。
- 如果现有群集距离另一个群集较近,则将其移出现有群集。
- 醇>
从候选群集列表中删除这些项目。
群集具有第一个元素的中心(不是其中项目的质心)。
答案 1 :(得分:0)
@iagreen的答案准确地解释了如何根据问题确定距离。
可以使用以下代码更改距离:
NonHierarchicalDistanceBasedAlgorithm<MarkerClusterItem> algorithm = new NonHierarchicalDistanceBasedAlgorithm<>();
algorithm.setMaxDistanceBetweenClusteredItems(50);
mClusterManager.setAlgorithm(algorithm);