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);
});
});