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

时间:2017-03-02 15:38:30

标签: leaflet turfjs

我在地图上使用传单绘制插件以编程方式(不使用传单绘制)在polygone中绘制折线,我想只保留多边形内部的折线点并删除它们在外面。你有任何想法如何使用传单插件吗?任何帮助深表感谢。感谢

以下是截图:

enter image description here

预期结果:

enter image description here

我对@Sam建议的差异方法进行了研究,所以最终我可以在我的绘图多边形和线上应用这个方法,这里是一个代码片段:

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);
}

这是结果的屏幕截图:

enter image description here

现在我想要移除这部分线并仅保留多边形内的部分,我试图这样做但不起作用。你能帮我吗?谢谢

1 个答案:

答案 0 :(得分:1)

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

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

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

  

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

我一直在为一个体面的图书馆寻找一段时间,并查看了传单,kevlindev,但我发现草皮真的只是开箱即用。

<强>更新

http://jsfiddle.net/ddce1wh5/怎么样?我使用了交叉,因为这显然是你要保留的部分,我误读,道歉。下面的http://jsfiddle.net/mcqL1y90/我们使用一个使用相交线的线阵列,或者如果没有发生交叉,它会使线本身在地图上绘制。