有没有办法找到一个由多个多边形对象组成的国家/大陆的中心(例如美国,加拿大,除了主要土地部分之外还有一个岛屿)?我试图使用传单Layer.getCenter()
甚至Layer.getBounds().getCenter()
,但这些方法肯定不适用于这类国家,并且返回" no-go&#34 ;结果
示例可以通过以下链接(传单游乐场)看到。只需滚动并点击美国或加拿大,然后查看circleMarker
将出现的位置。然后尝试点击较小的实体,比如美国南部的某些岛屿,他们应将此标记精确地放在' em的中心:
http://playground-leaflet.rhcloud.com/voyi/1/edit?html,output
答案 0 :(得分:2)
Leaflet只能计算要素边界框的中心。借助其他库(例如Turf.js)的一些帮助,您可以计算多边形的centroid或(多边形)。
在任何情况下,你都会感到困惑,因为有时候质心不在多边形(或多边形)内:
http://postgis.net/docs/images/st_centroid03.png
(图1.根据PostGIS's ST_Centroid
documentation的多边形的质心)
所以我猜你真正想问的是:
给定一个多边形或多边形,如何计算一个中心(或类似中心的点),该中心保证在多边形内并在视觉中心看起来,以便使用Leaflet将符号化器添加到该点?
为此,答案为"pole of inaccessibility"由polylabel
实现:«多边形轮廓中最远的内部点»。