有很多关于如何 detect if a marker is within a polygon 的文档在谷歌地图中。但是,我的问题是如何在多边形内任意放置标记(理想情况下尽可能远离边缘)
我尝试计算多边形点的平均纬度和经度,但这在某些非凹多边形中显然失败。
我还考虑过计算面积的center of mass ,但显然同样的情况也会发生。
有什么想法吗?我想避免 trial-and-error approaches ,即使 99% 的时间都有效。
最佳答案
您可以通过几种不同的方法来实现这一目标,具体取决于您的总体目标。
一种方法是构建多边形的三角剖分并将标记放置在其中一个三角形内。如果您不太担心最优性,您可以采用简单的启发式方法,例如选择最大三角形的质心,尽管这显然不一定会给您距离多边形边缘最远的点。多边形三角剖分有多种算法:ear-clipping或constrained Delaunay三角测量可能是可行的方法,并且存在许多好的库,即 CGAL和 Triangle .
如果您有兴趣寻找最佳放置位置,则可以使用基于骨架的方法,使用 medial-axis或straight skeleton的多边形。中轴是与多边形边等距的一组曲线,而直骨架是相关结构。具体来说,这些类型的结构可用于查找距边缘最远的点,check this out使用基于直骨架的方法的 GIS 标签放置应用程序。
希望这有帮助。
关于algorithm - 在 Google map 中的多边形内任意放置标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964646/