Я пытаюсь найти область пересечения между двумя многоугольниками, нарисованными на карте. Я пересекаю метод TurfJS, чтобы найти пересечение между двумя многоугольниками.Пересечение многоугольника на карте показывает смещение
Он работает хорошо для небольших областей, но для больших многоугольников он начинает показывать некоторое смещение в точках пересечения, смещение растет с увеличением расстояния. Это также видно только для полигонов с наклонными линиями (вертикальные и горизонтальные пересечения линий, похоже, хорошо работают).
Я создал JSFiddle для этого: https://jsfiddle.net/cLe6yo9d/
Я пытаюсь найти пересечение между черными и синими многоугольниками, что я получаю показан как красный многоугольник, который виден сдвинутым откуда следует быть.
var mapLayer = L.map('mapid', {
zoomAnimation: false
});
var pid = 'karan44.pdmio34k';
var at = 'pk.mapbox-access-token-goes-here';
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
id: pid,
accessToken: at
}).addTo(mapLayer);
var polygon1 = turf.polygon([
[
[3.405762, 51.395350],
[5.009766, 53.340303],
[7.141113, 53.653999],
[5.822754, 51.037508],
[3.405762, 51.395350]
]
], {
"fill": "#00000F",
"stroke": "#00000F",
"stroke-width": 1
});
var polygon2 = turf.polygon([
[
[0.241699, 54.173488],
[10.162354, 50.908012],
[8.854980, 50.062208],
[0.241699, 54.173488]
]
], {
"fill": "#0000FF",
"stroke": "#0000FF",
"stroke-width": 1
});
var polygon = turf.intersect(polygon1, polygon2);
polygon.properties = {
"fill": "#FF0000",
"stroke": "#FF0000",
"stroke-width": 1
};
L.mapbox.featureLayer().setGeoJSON(polygon1).addTo(mapLayer);
L.mapbox.featureLayer().setGeoJSON(polygon2).addTo(mapLayer);
L.mapbox.featureLayer().setGeoJSON(polygon).addTo(mapLayer);
mapLayer.setView([52.754260888947776, 5.72100021667583], 8);
Эта скрипка была создана путем модификации turf.intersect example воспроизвести проблему.
Надеясь, что кто-то может помочь мне понять, что происходит не так.
Похоже, что проблема может быть что-то еще. Вот сравнение с некоторыми большими кругами из Leaflet.Geodesic: https://jsfiddle.net/nathansnider/wjpyuLeL/ Великие круги (в белом) на самом деле склоняются вверх по карте, а пересечения дернов смещены вниз. – nathansnider