返回点击层传单
Returning clicked layer leaflet
我想select创建一个多边形,通过leaflet.draw点击创建。
这就是我实现 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: 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);
});
然后我想知道,我点击了哪个多边形。我这样做 each.layer
drawnItems.eachLayer(function(layer) {
layer.on('click', function() {
console.log(this._leaflet_id);
});
});
然而,那从来没有returns什么。
当我将 drawnItems
替换为 map
map.eachLayer(function(layer) {
layer.on('click', function() {
console.log(this._leaflet_id);
});
});
有点用。它总是 returns 相同的 id
,即使我点击不同的多边形...问题在哪里?
至于你在 drawnItems
组上的点击事件监听器没有显示任何东西,这可能是因为你循环 drawnItems.eachLayer
before 它实际上充满了您绘制的要素/多边形。
eachLayer
将遍历 current 子层。它不会对以后可能添加的图层有任何影响。
您可以直接将您的侦听器附加到您的 drawnItems
功能组。在这种情况下,您可以通过 event.layer
访问触发事件的子层,其中 event
是侦听器参数:
drawnItems.on("click", function(event) {
console.log("from drawnItems: " + event.layer._leaflet_id);
});
至于您在 map
上的监听器,由于相同的原始原因,它始终显示相同的 id
(eachLayer
循环 current 子层,即在您的情况下很可能只有 drawnItems
),并且您的 drawnItems
功能组也会发出 "click"
事件。因此,您实际上每次都看到 drawnItems
的 id
。
我想select创建一个多边形,通过leaflet.draw点击创建。
这就是我实现 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: 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);
});
然后我想知道,我点击了哪个多边形。我这样做 each.layer
drawnItems.eachLayer(function(layer) {
layer.on('click', function() {
console.log(this._leaflet_id);
});
});
然而,那从来没有returns什么。
当我将 drawnItems
替换为 map
map.eachLayer(function(layer) {
layer.on('click', function() {
console.log(this._leaflet_id);
});
});
有点用。它总是 returns 相同的 id
,即使我点击不同的多边形...问题在哪里?
至于你在 drawnItems
组上的点击事件监听器没有显示任何东西,这可能是因为你循环 drawnItems.eachLayer
before 它实际上充满了您绘制的要素/多边形。
eachLayer
将遍历 current 子层。它不会对以后可能添加的图层有任何影响。
您可以直接将您的侦听器附加到您的 drawnItems
功能组。在这种情况下,您可以通过 event.layer
访问触发事件的子层,其中 event
是侦听器参数:
drawnItems.on("click", function(event) {
console.log("from drawnItems: " + event.layer._leaflet_id);
});
至于您在 map
上的监听器,由于相同的原始原因,它始终显示相同的 id
(eachLayer
循环 current 子层,即在您的情况下很可能只有 drawnItems
),并且您的 drawnItems
功能组也会发出 "click"
事件。因此,您实际上每次都看到 drawnItems
的 id
。