Javascript 传单

Javascript 传单,javascript,leaflet,leaflet.draw,Javascript,Leaflet,Leaflet.draw,我想选择通过单击创建的多边形。 这就是我如何实现传单。绘制 var drawnItems = new L.FeatureGroup(); map.addLayer(drawnItems); // Initialise the draw control and pass it the FeatureGroup of editable layers var drawControl = new L.Control.Draw({ edit: { featureGroup: drawnI

我想选择通过单击创建的多边形。 这就是我如何实现
传单。绘制

var drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);

// Initialise the draw control and pass it the FeatureGroup of editable   layers
var drawControl = new L.Control.Draw({
  edit: {
    featureGroup: drawnItems
  }
});
map.addControl(drawControl);

// event when polygon is created
map.on('draw:created', function(e) {
  var type = e.layerType,
    layer = e.layer;

  // add created polygon to Itemcollection
  drawnItems.addLayer(layer);

  // add to map
  map.addLayer(layer);
});
然后我想知道,我点击了哪个多边形。我这样做是因为

然而,这永远不会有任何回报。 当我将
drawnItems
替换为
map

map.eachLayer(function(layer) {
  layer.on('click', function() {
    console.log(this._leaflet_id);
  });
});

它起作用了——有点像。它总是返回相同的
id
,即使我点击不同的多边形。。。hickup在哪里?

至于您在
drawnItems
组上的单击事件侦听器没有显示任何内容,这可能是因为您在
drawnItems.eachLayer
之前循环了
drawnItems

eachLayer
将循环当前子层。它不会对以后可能添加的层产生任何影响

您可以直接将侦听器连接到
drawnItems
功能组。在这种情况下,您可以通过
event.layer
访问触发事件的子层,其中
event
是侦听器参数:

drawnItems.on(“单击”),函数(事件){
console.log(“来自drawnItems:+event.layer.\u传单\u id”);
});
对于
map
上的侦听器,由于相同的原始原因,它始终显示相同的
id
eachLayer
循环通过当前子层,即在您的情况下,很可能只有
drawnItems
),并且您的
drawnItems
功能组也会发出一个
“click”
事件。因此,您实际上每次都会看到
drawnItems
id

演示:

map.eachLayer(function(layer) {
  layer.on('click', function() {
    console.log(this._leaflet_id);
  });
});