algorithm - 在 Google map 中的多边形内任意放置标记

标签 algorithm google-maps geometry

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

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

我还考虑过计算面积的center of mass ,但显然同样的情况也会发生。

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

最佳答案

您可以通过几种不同的方法来实现这一目标,具体取决于您的总体目标。

一种方法是构建多边形的三角剖分并将标记放置在其中一个三角形内。如果您不太担心最优性,您可以采用简单的启发式方法,例如选择最大三角形的质心,尽管这显然不一定会给您距离多边形边缘最远的点。多边形三角剖分有多种算法:ear-clippingconstrained Delaunay三角测量可能是可行的方法,并且存在许多好的库,即 CGALTriangle .

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

希望这有帮助。

关于algorithm - 在 Google map 中的多边形内任意放置标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13964646/

相关文章:

c - 霍斯普尔算法

c++ - 如何改进我的哈希算法

algorithm - Kademlia iterativeFindNode 操作是否在 k-buckets 中存储找到联系人?

javascript - 有没有办法从客户端确定访问者所在的国家/地区?

css - 在 before 之后用 css 制作一个特定的表单

python - 在Python中从3D顶点列表构造多边形

algorithm - DPLL算法流程

google-maps - 如何使用 ElasticSearch 创建像 Redfin.com 这样的分面搜索?

javascript - 根据要素属性使用外部按钮切换 Google Maps API 数据层要素

ios - 将 MKCooperativeRegion 视为矩形是否会再次困扰我?