使用 Leaflet 删除多边形之外的多段线点

Remove points of polylines that are outside of polygon using Leaflet

我已经使用地图上的传单绘图插件在多边形内部以编程方式绘制折线(不使用传单绘制),我只想保留多边形内部的折线点并删除外部的折线。你知道如何使用传单插件来做到这一点吗?任何帮助深表感谢。谢谢

这是截图:

预期结果:

我按照@Sam的建议研究了**turf"库的差异方法,所以最后我可以在我的绘图多边形和线条上应用这个方法,这是一个代码片段:

var line = path.toGeoJSON();
var polygon = selectedPoly.toGeoJSON();
var difference, result = [];
difference = turf.difference(line, polygon);
if (difference) 
{
    result.push(difference);
    var inter = L.geoJson(result).addTo(map);
}

这是结果截图:

现在我想删除这部分线并只保留多边形内的部分,我尝试这样做但没有成功。你能帮我吗?谢谢

我正在与 turfjs 一起检查传单中的重叠多边形。

map.on('draw:created', function (e) {
      var intersection = [];
      otherPolysLayer.eachLayer(function (layer) {
      if (!_.isUndefined(turf.intersect(e.layer.toGeoJSON(), ))) {
             intersection.push(layer);
      }
   }) 
});

您可以更改上面的内容,以便它检查整个多边形,您可以使用 difference 方法检查。

difference: Finds the difference between two polygons by clipping the second polygon from the first.

我一直在寻找一个像样的图书馆,并研究了 leaflet-pip、kevlindev 等,但我发现 turf 确实开箱即用。

更新

http://jsfiddle.net/ddce1wh5/ how about this? I used intersect, because that is apparently the part you'd like to keep, I misread, apologies. The following http://jsfiddle.net/mcqL1y90/ 我们使用一组线,这些线使用相交线,或者如果没有发生相交,则使用线本身在地图上绘制。