js擦除产生多边形与错误的投影



我使用turfjs erase和传单绘制插件一起从正在绘制的新多边形中减去现有的多边形。然而,结果多边形没有正确显示在地图上,这似乎是一个投影问题。

mapEPSG4326.on('draw:created', function (e) {
    var clippedZone = e.layer.toGeoJSON();
    polyLayer2.eachLayer(function (existingPoly) {
        clippedZone = turf.erase(clippedZone, existingPoly.feature);
    });
    polyLayer2.addData(clippedZone);
});

将我的传单地图投影CRS更改为L.CRS时。EPSG4326多边形显示正确,但这会产生其他问题。

是否有一种方法可以改变结果多边形的投影从turf.js,以正确显示在默认的L.CRS。EPSG3857投影使用的单张?

显示行为的jsfiddle https://jsfiddle.net/pdjo/s5v19es0/3/

你最可能看到的是在球形墨卡托中用一条直线近似地球上两点之间的线所产生的效果。地球上两点之间最接近的线,也就是大圆,在球形墨卡托坐标系中通常不是直线,而是曲线。不过,对于短距离来说,直线是很好的近似。

如果你在一个更小的区域(比如几公里)做同样的事情,看起来会很棒。

可以在较小的区域上这样做,或者使用一些可以绘制实际大圆圈的插件来绘制线条。

总而言之:错误不在于草皮或数据,而在于传单如何将线条近似为直线,而不是真正的大圆圈(恕我冒昧,这是一个合理的权衡,但在这种情况下会崩溃)。

最新更新