2013-10-16 60 views
3

我的情况下重新排列点是我动态定位静态地图图像上的一堆图标,每个图标由CSS,绝对定位。现在经常发生这样的情况,即两个甚至更多的点彼此靠得太近,所以图标重叠并且不再可区分。过于接近,彼此

我在寻找一种算法来找到这些“太靠近对方”点,然后以某种方式传播自己的图标了,他们不相互重叠了。

我想径向传播的,比如寻找过于接近所有点的平均中间点,然后蔓延出来相对这一点。

是否有这样的,其中你可能知道一个问题的任何模式?

非常感谢。

+0

根据叠加深度/接近度更改图标颜色。 –

+0

我是否正确阅读您是在二维地图上标记点? –

回答

1

这里有可能会解决你的问题几个解决方案:

  • 使用解决closest pair of points problem找到两个图标是最接近彼此。如果最接近的一对在您的定义中“太接近”,您可以将它们彼此分开并重复此过程。

  • 使用空间数据结构等的k d树或R树来存储所有的点。然后,您可以执行快速的最近邻居搜索,找到彼此靠近的点并将它们分开。

  • 使用找到,在全球范围减少一些能量函数点的布局。像Fruchterman-Reingold这样的算法非常简单,可以编码并产生良好的结果。

希望这有助于!