Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 地图覆盖中的去冲突标记_Android_Android Mapview_Google Maps Markers_Hierarchical Clustering - Fatal编程技术网

Android 地图覆盖中的去冲突标记

Android 地图覆盖中的去冲突标记,android,android-mapview,google-maps-markers,hierarchical-clustering,Android,Android Mapview,Google Maps Markers,Hierarchical Clustering,我需要解决在地图上标记数千个项目的问题,这种方法准确、易读且快速,即使当用户缩小时,标记也会以令人困惑的方式重叠。这是一个AndroidMapView,但我的问题更一般 我知道,和各种启发式 这些算法似乎不准确,因为聚类标记与质心不对应。我的应用程序是安全关键的,而且标记相当大,所以近似值不够好 在我发明了一种算法之后,我知道它最初是在80年代使用的。其正确描述为伪代码,如下所示: -- Greedy hierarchical clustering given R the clearance r

我需要解决在地图上标记数千个项目的问题,这种方法准确、易读且快速,即使当用户缩小时,标记也会以令人困惑的方式重叠。这是一个Android
MapView
,但我的问题更一般

我知道,和各种启发式

这些算法似乎不准确,因为聚类标记与质心不对应。我的应用程序是安全关键的,而且标记相当大,所以近似值不够好

在我发明了一种算法之后,我知道它最初是在80年代使用的。其正确描述为伪代码,如下所示:

-- Greedy hierarchical clustering
given R the clearance radius of markers 
let S be a set, initially singleton clusters containing exactly one marker each
loop
  let <a,b> be the pair of clusters in S with closest centroids, distance d apart; (1)
  if d >= 2R, exit the loop;
  remove a and b from S;
  insert new Cluster(a union b) into S;
end loop;
——贪婪层次聚类
给定R标记的间隙半径
假设我们是一个集合,最初是单个集群,每个集群只包含一个标记
环
设为S中具有最近质心的一对簇,相距d;(1)
如果d>=2R,退出循环;
从S上拆下a和b;
在S中插入新的簇(a和b);
端环;
现在在每个簇的质心处绘制一个标记

我使用了一个可更新的Delaunay三角剖分和一个优先级队列来提高(1)的效率,但最近发现删除kd树也可以工作。DT算法的不对称复杂性与kd树(O(n logn)平均数)相同,但我猜想它在实践中会更快

问题是:

  • 是否有更好的算法来查找集群?贪婪算法可以产生比严格按照最小数量分离标记所需的更少的聚类。找到最大的集合可能是NP困难的。有比贪婪更好的启发式方法吗
  • 用kd树代替Delaunay三角剖分值得吗?DT在10000个节点上的性能在快速平板电脑上是微乎其微的:缩放后最多2秒
  • 是否存在在簇质心处放置标记的现有包