有很多关于如何在Google地图中detect if a marker is within a polygon的文档。但是,我的问题是如何在多边形内任意放置一个标记(理想情况下尽可能远离边缘)
我尝试计算多边形点的平均纬度和经度,但这显然在一些非凹多边形中失败。
我还想过计算区域的center of mass,但显然会发生相同的情况。
有什么想法吗?我想避免使用trial-and-error approaches,即使它在99%的时间都有效。
答案 0 :(得分:2)
有几种不同的方法可以解决这个问题,具体取决于您的总体目标是什么。
一种方法是构造多边形的三角剖分并将标记放在其中一个三角形内。如果你不太担心最优性,你可以使用一个简单的启发式方法,比如选择最大三角形的质心,虽然这显然不一定能给你最远离多边形边缘的点。多边形三角剖分有许多算法:ear-clipping或constrained Delaunay三角剖分可能是要走的路,并且存在许多好的库,即CGAL和Triangle。
如果您有兴趣找到最佳位置,可以使用基于骨架的方法,使用多边形的medial-axis或straight skeleton。中轴是与多边形边缘等距离的曲线组,而直骨架是相关结构。具体来说,这些类型的结构可用于找到离边缘最远的点,check this out用于GIS的标签放置应用程序,使用基于直骨架的方法。
希望这有帮助。