2016-07-21 55 views
2

以下是檢測編輯的多邊形頂點的事件。 我想獲取整個多邊形的latLng編輯其頂點。 有可能嗎? 否則我需要在其中觸發「繪製:編輯」事件。Leaflet-Draw:在'draw:editvertex'事件中獲取多邊形latLng

this.map.on('draw:created', function(e) { 
     this.drawnItems.addLayer(e.layer); 
     this.calculateArea(e.layer); 
     edT.enable(); 
    }.bind(this)); 

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

回答

0

我在過去幾天同樣的問題掙扎,我想分享的是爲我工作的方法(但並不覺得這是最好的做法)。

我存儲在「選項」的項目_id新創建的單張多邊形的領域,像這樣:

realPoly = new L.Polygon([your Array of lanLngs],{ 
    '_id':myItem.id, 
    '_myOtherId':myOtherId 
}) 

...然後在「畫:editvertex」處理,我做的以下:

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 polygon id?"); 
      console.log(e.target._layers[thisLayer]); 
      // you can find your custom params below 
      console.log(e.target._layers[thisLayer].options._id); 
      console.log(e.target._layers[thisLayer].options._myOtherId); 
      // the updated Polygon array points are here: 
      newPolyLatLngArray = e.target._layers[thisLayer].editing.latlngs[0]); 
     } 
    } 
    }; 
}); 

...就像我說的,這並不覺得棒極了,但它到目前爲止還在爲我工作。希望這會有所幫助,

AKA