我使用Leaflet制作了一个网站,在OSM-Map上绘制多边形。
现在我想要检查多边形的大小,因为多边形的大小不能超过一个定义好的尺寸,例如5平方千米。
有没有人有好的方法来检查绘制的多边形的大小?
现在我想要检查多边形的大小,因为多边形的大小不能超过一个定义好的尺寸,例如5平方千米。
有没有人有好的方法来检查绘制的多边形的大小?
我使用了leaflet.draw(https://github.com/Leaflet/Leaflet.draw)来绘制一个多边形。
它有一个地理面积函数,可以在“ draw:created”中进行示例。
map.on('draw:created', function (e) {
var type = e.layerType,
layer = e.layer;
if (type === 'polygon')
{
var area = L.GeometryUtil.geodesicArea(layer.getLatLngs())
...
GeometryUtil.geodesicArea()
来获取面积,如下所示:let area = L.GeometryUtil.geodesicArea(layer.getLatLngs()[0]);
function polygonArea(X, Y, numPoints)
{
area = 0; // Accumulates area in the loop
j = numPoints-1; // The last vertex is the 'previous' one to the first
for (i=0; i<numPoints; i++)
{ area = area + (X[j]+X[i]) * (Y[j]-Y[i]);
j = i; //j is previous vertex to i
}
return area/2;
}
正如网页所说,从多边形路径的任何位置开始都没有关系。但是,如果您按逆时针顺序开始,结果将为负数。您可以通过仅获取此函数返回的绝对值来处理所有情况。