Javascript 重新排列彼此太近的点

Javascript 重新排列彼此太近的点,javascript,css,algorithm,design-patterns,math,Javascript,Css,Algorithm,Design Patterns,Math,我的情况是,我在静态地图图像上动态地定位一组图标,每个图标都是通过CSS绝对定位的。现在经常发生的情况是,两个或更多的点彼此太近,因此图标重叠,无法区分 我正在寻找一种算法来找到这些“彼此太近”的点,然后将它们的图标展开,使它们不再重叠 我考虑的是径向分布,比如找到所有太近的点的平均中点,然后将它们相对该点分布 你知道这种问题有什么模式吗 提前非常感谢。以下是一些可能解决您问题的解决方案: 使用解决方案查找最接近的两个图标。如果根据您的定义,最近的一对“太近”,您可以将它们彼此分开并重复此过程

我的情况是,我在静态地图图像上动态地定位一组图标,每个图标都是通过CSS绝对定位的。现在经常发生的情况是,两个或更多的点彼此太近,因此图标重叠,无法区分

我正在寻找一种算法来找到这些“彼此太近”的点,然后将它们的图标展开,使它们不再重叠

我考虑的是径向分布,比如找到所有太近的点的平均中点,然后将它们相对该点分布

你知道这种问题有什么模式吗


提前非常感谢。

以下是一些可能解决您问题的解决方案:

  • 使用解决方案查找最接近的两个图标。如果根据您的定义,最近的一对“太近”,您可以将它们彼此分开并重复此过程

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

  • 使用a为全局最小化某些能量函数的点找到布局。像Fruchterman Reingold这样的算法非常容易编写代码并产生良好的结果


希望这有帮助

根据堆叠深度/接近度更改图标颜色。我是否正确理解您在二维地图上标记点?