【发布时间】:2019-08-30 22:12:46
【问题描述】:
我正在使用 GeometryUtil.geodesicArea 函数将弹出窗口绑定到包含有关多边形面积的信息的多边形。在这里,粘贴straight from the code:
geodesicArea: function (latLngs) {
var pointsCount = latLngs.length,
area = 0.0,
d2r = Math.PI / 180,
p1, p2;
if (pointsCount > 2) {
for (var i = 0; i < pointsCount; i++) {
p1 = latLngs[i];
p2 = latLngs[(i + 1) % pointsCount];
area += ((p2.lng - p1.lng) * d2r) *
(2 + Math.sin(p1.lat * d2r) + Math.sin(p2.lat * d2r));
}
area = area * 6378137.0 * 6378137.0 / 2.0;
}
return Math.abs(area);
}
当我使用这些坐标在加拿大萨斯喀彻温省的大致区域上绘制一个矩形时:
0: {lat: 49.06465160956338, lng: -110.00904901708327}
1: {lat: 59.94790491663552, lng: -110.00904901708327}
2: {lat: 59.94790491663552, lng: -101.6155500597509}
3: {lat: 49.06465160956338, lng: -101.6155500597509}
roughly 651,900 sq km,它返回 30610232650154772。如果这个数字是 assumed to be in square meters,它大约等于 300 亿平方公里,which is well beyond the surface area of the entire earth,除非我错过了数字的含义返回。
这个测地线面积函数计算什么?我应该使用其他方法/函数来获取多边形的面积吗?
这是我正在使用的代码以及逐行计算的值
【问题讨论】:
标签: geometry leaflet geospatial leaflet.draw