我正在使用地图创建一个应用程序,我必须在上面放置点。问题是,当点在附近时,用户看不到差异。所以,我需要重新组合要点。
我收到这样的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}]
我需要用所有其他点的平均值的坐标重新组合最大点相差20像素的点。它处理一个类似的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,则删除第二个点或将其与第一个点分组,这样就不必再次处理它。如果你想的话,你可以计算出该组的平均位置