0

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 に変更すると、ポリゴンは正しく表示されますが、他の問題が発生します。

リーフレットで使用されるデフォルトの L.CRS.EPSG3857 プロジェクションで正しく表示するために、turf.js から結果ポリゴンのプロジェクションを変更する方法はありますか?

動作を示す jsfiddle https://jsfiddle.net/pdjo/s5v19es0/3/

4

1 に答える 1

0

最も可能性が高いのは、地球上の 2 点間の線を球状メルカトル図法の直線で近似した効果です。大円として知られる、地球上の 2 点間の実際の最も近い線は、通常、球状メルカトル図法では直線ではなく、曲線のように見えます。ただし、短距離の場合は直線が適切な近似値です。

はるかに小さな領域 (数キロメートルなど) で同じことを行うと、見栄えがよくなります。

より小さな領域でこれを行うか、実際の大円を描くプラグインを使用して線を引きます。

要約すると、エラーは Turf やデータにあるのではなく、実際の大円ではなく、Leaflet が線を直線として近似する方法にあります (これは合理的なトレードオフですが、このような場合には崩壊します)。

于 2015-09-01T13:49:08.093 に答える