我正在使用Leaflet.js库。我有一组地理点,用纬度和经度描述,并基于这些点定义了一个多边形。如何删除多边形的内部点并仅绘制其外部边界?

点数组

[[53, 31], [51.4, 31.2], [51.3, 32] ... etc.] //it's length ~ 500 points.


初始化地图

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(mymap);


设定多边形

L.polygon(points, {color: 'red'}).addTo(mymap);


这就是我现在所拥有的。这是所有显示的500点。


我期待的结果。此处所有内部点均被删除,显示了覆盖区域。

最佳答案

听起来您正在寻找凸包算法:它将为您提供点的“包络”。

您可以使用例如Turfjs:https://turfjs.org/docs/#convex

但请注意,这需要处理转换为GeoJSON对象的数据。

您也可以看看Leaflet.markercluster插件如何实现它。

10-08 16:11