Leafletjs中的L.polygon边界

Posted

技术标签:

【中文标题】Leafletjs中的L.polygon边界【英文标题】:L.polygon boundings in leafletjs 【发布时间】:2016-07-13 08:09:57 【问题描述】:

我在地图中有几个标记,我想为地图内的区域涂上不同颜色的颜色。我试过 L.multiPolygon 、 L.polygon 、 L.rectangle ,但除了我想要什么都没有。我想我唯一的选择是计算所有标记的边界并根据这些点绘制多边形,对吧?

这里是代码

<c:forEach var="marker" items="$markers" varStatus="rowIndex">
        var marker$rowIndex.index = L.marker([$marker.lat,$marker.lng],icon: yellowIcon,title: '$marker.title').addTo(mymap)
        .bindPopup( "$marker.htmlMarkerPopupCode").openPopup();
        storeCoordinate($marker.lat, $marker.lng, polygonPoints);
</c:forEach>

 var polygon = L.polygon(polygonPoints);

polygon.setStyle(fillColor: '#0000FF');
polygon.setStyle(color: 'red');
polygon.setStyle(weight:1);   
polygon.setStyle(fillOpacity: 0.5);
mymap.addLayer(polygon); 

我想实现类似这张图的东西:

【问题讨论】:

【参考方案1】:

您也可以使用 L.Polygon。

只要做这样的事情:

var polygon = L.polygon([
    marker1,
    marker2,
    marker3,
], 
   fillColor: '#f03' // My custom color here

).addTo(mymap);

【讨论】:

【参考方案2】:

不确定您要达到的具体目标是什么?

您可能对计算标记区域的Convex Hull 感兴趣。

在这种情况下,您应该能够在 Internet 上找到一些 javascript 实现。例如,您可以在 Leaflet.markercluster 插件中查看它是如何完成的:https://github.com/Leaflet/Leaflet.markercluster/blob/master/src/MarkerCluster.QuickHull.js


编辑:

至于创建凸包,你也可以使用Turf,特别是turf.convex

Turf 还为您提供了许多其他功能,包括turf.concave

【讨论】:

以上是关于Leafletjs中的L.polygon边界的主要内容,如果未能解决你的问题,请参考以下文章

leafletJs(转)

地图上的Leafletjs内存泄漏删除

LeafletJS:如何删除缩放控件

在leafletjs中绘制140K点

Leafletjs 地理编码网络服务

缩放以适合 LeafletJS 地图上的所有标记