重组地理点的算法

Algorithm to regroup geographic points

我正在使用地图创建一个应用程序,我必须在上面放置点。问题是当这些点在附近时,用户看不出差异。所以,我需要重新组合积分。

我收到了这样的 JSON:

[{"id": "1", "x": 253, "y": 144}, 
{"id": "2", "x": 142, "y": 355}, 
{"id": "3", "x": 175, "y": 330}, 
{"id": "4", "x": 140, "y": 5}, 
{"id": "5", "x": 307, "y": 306}, 
{"id": "6", "x": 233, "y": 304}, 
{"id": "7", "x": 212, "y": 163}, 
{"id": "8", "x": 202, "y": 163}, 
{"id": "9", "x": 204, "y": 171}]

我需要重新组合最大点相差 20px 的点与所有其他点的平均值的坐标。 是这样的 JSON:

[{"id": ["1"], "x": 253, "y": 144}, 
{"id": ["2"], "x": 142, "y": 355}, 
{"id": ["3"], "x": 175, "y": 330}, 
{"id": ["4"], "x": 140, "y": 5}, 
{"id": ["5"], "x": 307, "y": 306}, 
{"id": ["6"], "x": 233, "y": 304}, 
{"id": ["7","8","9"], "x": 206, "y": 165}]

我只需要一个算法来帮助我构建自己的代码。

谢谢你能给我的所有帮助。

欧氏距离是两点之间的最短路径,计算公式为

sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2))

只需从上到下遍历您的点列表,如果任意两点之间的欧几里得距离小于 20,则删除第二个点或将其与第一个点分组,这样您就不会再次处理它。然后,您可以根据需要计算该组的平均位置。