通过传单获取geojson大陆/国家/州的中心

时间:2017-02-08 09:15:11

标签: javascript leaflet geojson markers

有没有办法找到一个由多个多边形对象组成的国家/大陆的中心(例如美国,加拿大,除了主要土地部分之外还有一个岛屿)?我试图使用传单Layer.getCenter()甚至Layer.getBounds().getCenter(),但这些方法肯定不适用于这类国家,并且返回" no-go&#34 ;结果

示例可以通过以下链接(传单游乐场)看到。只需滚动并点击美国或加拿大,然后查看circleMarker将出现的位置。然后尝试点击较小的实体,比如美国南部的某些岛屿,他们应将此标记精确地放在' em的中心:

http://playground-leaflet.rhcloud.com/voyi/1/edit?html,output

1 个答案:

答案 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实现:«多边形轮廓中最远的内部点»。