如何使用leaflet.draw从多边形中获取区域字符串

Mar*_*y.H 11 javascript leaflet

我正在尝试获取多边形的面积测量值,以便我可以将它们列在地图一侧的表格中,旁边是多边形的名称.这是我尝试过没有成功的:

$("#polygon").on("click", function (){
    createPolygon = new L.Draw.Polygon(map, drawControl.options.polygon);
    createPolygon.enable();
}

var polygon = new L.featureGroup();

map.on('draw:created', function (e) {
    var type = e.layerType,
        layer = e.layer;
    if (type === 'polygon') {
      polygons.addLayer(layer);
    }
    var seeArea = createPolygon._getMeasurementString();
   console.log(seeArea);  //Returns null
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将不胜感激!

The*_*sor 20

您可以访问Leaflet提供的几何实用程序库.

var area = L.GeometryUtil.geodesicArea(layer.getLatLngs());
Run Code Online (Sandbox Code Playgroud)

在您的示例中,您尝试访问控件本身,这是变量createPolygon分配给的控件.相反,您想要获取绘制的图层区域.

map.on('draw:created', function (e) {
  var type = e.layerType,
      layer = e.layer;
  if (type === 'polygon') {
    polygons.addLayer(layer);
    var seeArea = L.GeometryUtil.geodesicArea(layer.getLatLngs());
    console.log(seeArea);
  }
}
Run Code Online (Sandbox Code Playgroud)

一旦确认获得该区域,就可以将其分配给填充地图旁边的表格的变量.

注意:默认情况下,区域将以squareMeters为单位

  • 请注意,此处的几何实用程序库引用:[Leaflet.draw](https://github.com/Leaflet/Leaflet.draw). (6认同)
  • 您需要访问 getLatLngs 结果的第一个位置:`let seeArea = L.GeometryUtil.geodesicArea(layer.getLatLngs()[0]);` (3认同)
  • 我不断得到面积= 0 (2认同)