在Google地图中的多边形内任意放置一个标记

时间:2012-12-20 03:01:42

标签: algorithm google-maps geometry

有很多关于如何在Google地图中detect if a marker is within a polygon的文档。但是,我的问题是如何在多边形内任意放置一个标记(理想情况下尽可能远离边缘)

我尝试计算多边形点的平均纬度和经度,但这显然在一些非凹多边形中失败。

我还想过计算区域的center of mass,但显然会发生相同的情况。

有什么想法吗?我想避免使用trial-and-error approaches,即使它在99%的时间都有效。

1 个答案:

答案 0 :(得分:2)

有几种不同的方法可以解决这个问题,具体取决于您的总体目标是什么。

一种方法是构造多边形的三角剖分并将标记放在其中一个三角形内。如果你不太担心最优性,你可以使用一个简单的启发式方法,比如选择最大三角形的质心,虽然这显然不一定能给你最远离多边形边缘的点。多边形三角剖分有许多算法:ear-clippingconstrained Delaunay三角剖分可能是要走的路,并且存在许多好的库,即CGALTriangle

如果您有兴趣找到最佳位置,可以使用基于骨架的方法,使用多边形的medial-axisstraight skeleton。中轴是与多边形边缘等距离的曲线组,而直骨架是相关结构。具体来说,这些类型的结构可用于找到离边缘最远的点,check this out用于GIS的标签放置应用程序,使用基于直骨架的方法。

希望这有帮助。