2

我正在使用奇妙的“传单几何人”来绘制和编辑几何图形,但在理解切割工具的工作原理时遇到了麻烦。如何获得已切割层的几何形状?

这是我的代码:

mymap.on('pm:create', function(e) {        
                e.poly;
                var type = e.layerType,
                    layer = e.layer;
                $(document).ready(function() {
                        layer.on('pm:cut', ({ layer }) => {
                             console.log(layer.toGeoJSON());
                        });
                    var jsnPolygon = e.layer.toGeoJSON().geometry;
                    jsnPolygon = {
                        type: "MultiPolygon",
                        coordinates: [jsnPolygon.coordinates]
                    };
                    console.log(layer.toGeoJSON());
                })
            });

console.log 在切割前后给出了相同的结果,即矩形坐标。

在此处输入图像描述

- - 更新 - -

按建议添加console.log(JSON.stringify(e));会返回此错误:

Uncaught TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'e'
    |     property 'pm' -> object with constructor 'e'
    --- property '_layer' closes the circle

完成切割后的行为是它仍然启用了绘图/切割工具,尽管我无法“完成”它。

4

2 回答 2

2

尝试:

map.on("pm:cut",function(e){
   console.log(e.layer.getLayers()[0].getLatLngs()); //or loop through with e.layer.eachLayer(func)
});
于 2020-03-05T16:18:45.800 回答
0

您需要使用正确的事件。地曼文档

// This fires when cutting event is completed
mymap.on('pm:cut', e => {
  // This is the full event object
  console.log(e)

  // This holds the new geometry
  console.log(e.layer.toGeoJSON())
})
于 2020-03-05T16:46:54.260 回答