Leaflet-Draw: получить широту полигона в событии «draw: editvertex»

Когда срабатывает событие draw:editvertex, как я могу получить информацию о полигоне, вызвавшем его?

this.map.on('draw:editvertex', function (e) { debugger;
    var layers = e.layers;
    // I want to get current polygon latLng here
}.bind(this));

person Kalashir    schedule 21.07.2016    source источник


Ответы (2)


Этот подход работает для меня (но не кажется лучшей практикой) -

В моем обработчике draw:editvertex я перебираю target._layers и ищу свойство edited:

map.on('draw:editvertex', function(e) {
    for (thisLayer in e.target._layers) {
        if (e.target._layers.hasOwnProperty(thisLayer)) {
            if (e.target._layers[thisLayer].hasOwnProperty("edited")) {
                console.log("we think we found the polygon?");
                console.log(e.target._layers[thisLayer]);

                // the updated Polygon array points are here:
                newPolyLatLngArray = e.target._layers[thisLayer].editing.latlngs[0];
            }
        }
    };
});

... как я уже сказал, это не кажется крутым, но пока это работает для меня.

person AKA    schedule 30.08.2016

В e есть не только layers, но и к целевому слою poly можно легко добраться.

map.on('draw:editvertex', function (e) { 
  var poly = e.poly;
  var latlngs = poly.getLatLngs(); // here the polygon latlngs
});
person Jayson Chiang    schedule 06.01.2020