Вырезать отверстия в полигоне с листовкой геоман - PullRequest
1 голос
/ 05 марта 2020

Я использую fantasti c "геоман листовки", чтобы рисовать и редактировать геометрию, но не могу понять, как работает режущий инструмент. Как получить геометрию обрезанного слоя?

Это мой код:

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 дает одинаковый результат до и после резки, т.е. координаты прямоугольника.

enter image description here

---- ОБНОВЛЕНИЕ ---

Добавление 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

Поведение после завершения резки заключается в том, что на нем по-прежнему включен инструмент для рисования / резки, хотя я не могу его "завершить".

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Попробуйте:

map.on("pm:cut",function(e){
   console.log(e.layer.getLayers()[0].getLatLngs()); //or loop through with e.layer.eachLayer(func)
});
0 голосов
/ 05 марта 2020

Вам нужно использовать правильное событие. Geoman Docs

// 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())
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...