使用Google地图进行基于距离的群集

时间:2016-11-29 15:12:00

标签: android google-maps

我正在使用Google地图的群集工具。默认实现非常好,但有很多时候将项目分组到一个集群中,即使它们彼此相距较远。

如何确定项目组合在一起的项目之间的距离?这当然应该根据缩放级别进行更改。

2 个答案:

答案 0 :(得分:1)

source code是个好看的地方!根据评论here

  

public static final int MAX_DISTANCE_AT_ZOOM = 100; //基本上是100 dp。

如果它们距离"中心大约100dp,则事物聚集在一起。集群因此,群集中的两个点应该永远不会超过200dp。还要注意,"中心"不是群集的中间,而是选择作为群集种子的标记。这使得算法对添加项目的顺序敏感。来自docs的算法描述 -

  
      
  1. 按照添加顺序(候选群集)迭代项目
  2.   
  3. 创建一个包含项目中心的群集。
  4.   
  5. 将距离群集一定距离内的所有项目添加到群集中。
  6.   
  7. 如果现有群集距离另一个群集较近,则将其移出现有群集。
  8.   
  9. 从候选群集列表中删除这些项目。

         

    群集具有第一个元素的中心(不是其中项目的质心)。

  10.   

答案 1 :(得分:0)

@iagreen的答案准确地解释了如何根据问题确定距离。

可以使用以下代码更改距离:

  NonHierarchicalDistanceBasedAlgorithm<MarkerClusterItem> algorithm = new NonHierarchicalDistanceBasedAlgorithm<>();
            algorithm.setMaxDistanceBetweenClusteredItems(50);
            mClusterManager.setAlgorithm(algorithm);