Коллеги доброго времени суток. Немного лирики:
Есть приложение с картой. Карта сделана на Leaflet. На карте есть кейс, нарисовать полигон и получить его данные. Так вот, полигон рисуется с помощью leaflet.editable. Все норм, но дальше получается какая-то муть. Нужно получить площадь прямоугольника данного, вот код:
polygonSize(polygon) {
return new Promise((resolve, reject) => {
let coords = polygon.getBounds();
let data = {};
data.conners = {
ne: [coords._northEast.lat, coords._northEast.lng], // северо-восток
sw: [coords._southWest.lat, coords._southWest.lng], // юго-запад
nw: [coords._northEast.lat, coords._southWest.lng], // северо-запад
se: [coords._southWest.lat, coords._northEast.lng] // юго-восток
};
let points = {
sw: new L.LatLng(data.conners.sw[0], data.conners.sw[1]), // юго-запад
se: new L.LatLng(data.conners.se[0], data.conners.se[1]), // юго-восток
ne: new L.LatLng(data.conners.ne[0], data.conners.ne[1]) // серверо-восток
};
data.width = +(points.sw.distanceTo(points.se)).toFixed(0);
data.height = +(points.se.distanceTo(points.ne)).toFixed(0);
resolve(data);
});
}
Формулу площади все я думаю знают (ширина * высота). Что бы получить ширину и высоту, я беру три точки прямоугольника (юго-запад, юго-восток и северо восток) и получаю расстояние между ними (см. код выше), делает это стандартный метод leaflet -> point.distanceTo(point2); вроде все логично. Вопросы начинаются тогда когда я начинаю двигать данный прямоугольник по карте. Каждый раз площадь его меняется. Не на много но тем не менее.
Собственно вопрос, может у кого-то есть идеи почему так происходит? Заранее благодарю