我使用 Google Maps Static API 在网页上显示小型 Google map 。
我有一组 15 个坐标,我想将其表示为 map 上的点。
由于 map 相当小(184 x 90 像素),并且 Google map URL 的字符数上限为 2000 个字符,因此我无法表示 map 上的每个点。
因此,我想生成一个小坐标列表,代表大列表的平均值。
因此,我最终得到的不是 15 组,而是 5 组,它们的位置近似于 15 组的位置。假设有 3 个点彼此之间的距离比 map 上任何其他点的距离都近,这些点将被折叠成 1 点。
所以我想我正在寻找一种可以做到这一点的算法。
不要求任何人阐明每一步,但也许可以为我指明此类事情的数学原理或通用函数的方向?
我确信在对图像进行像素化时,例如图形软件中会使用类似的功能。
(如果我解决了这个问题,我一定会发布我的结果。)
最佳答案
我推荐K-means clustering当您需要将 N 个对象聚类成已知数量 K < N 的簇时,这似乎就是您的情况。请注意,一个簇可能最终有一个离群点,而另一个簇可能有 5 个点彼此非常接近:没关系,它看起来会比您在每个簇中强制添加 3 个点更接近您的原始集!-)
关于algorithm - 将 Google map 上的一组点平均为一个较小的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1355607/