2

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

这是一个屏幕截图:

在此处输入图像描述

预期结果:

在此处输入图像描述

我按照@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);
}

这是结果的屏幕截图:

在此处输入图像描述

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

4

1 回答 1

1

我正在使用turfjs检查传单中的重叠多边形。

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

您可以更改上述内容,以便它检查整个多边形,您可以使用差异方法进行检查。

差异:通过从第一个多边形中裁剪第二个多边形来查找两个多边形之间的差异。

我一直在寻找一个体面的图书馆,并研究了leaflet-pip、kevlindev等,但我发现草皮真的开箱即用。

更新

http://jsfiddle.net/ddce1wh5/这个怎么样?我使用了 intersect,因为这显然是您想要保留的部分,我误读了,抱歉。以下http://jsfiddle.net/mcqL1y90/我们使用了一个使用相交线的线数组,或者如果没有发生相交,则使用线本身在地图上绘制。

于 2017-03-02T15:58:42.950 回答