重新排列过于接近的点

3
我的情况是我正在对静态地图图像上的一堆图标进行动态定位,每个图标都由CSS绝对定位。现在经常发生的情况是,两个甚至更多的点过于接近,所以这些图标重叠在一起,它们不再可辨。
我正在寻找一种算法来查找这些“过于接近”的点,然后以使它们不再重叠的方式将它们的图标分散开。
我考虑采用径向扩展,例如找到所有太近的点的平均中心点,然后相对于该点将它们分散开。
是否有您知道的解决此类问题的模式?
非常感谢。

根据堆叠深度/接近程度更改图标颜色。 - Diodeus - James MacFarlane
我读得正确吗,您正在给二维地图上的点打标签? - Mark Bailey
1个回答

1
以下是几种可能解决您问题的解决方案:
  • 使用最近点对问题的解决方案来查找彼此最接近的两个图标。如果最接近的一对“太接近”了,可以将它们彼此分开并重复此过程。

  • 使用像k-d树或R树这样的空间数据结构来存储所有点。然后可以执行快速的最近邻搜索来查找彼此接近的点,并将它们分开移动。

  • 使用力导向布局算法来查找全局最小化某些能量函数的点布局。像Fruchterman-Reingold这样的算法很容易编码,并产生良好的结果。

希望这可以帮助到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接