如何在单击时获取要素组中的图层ID

kuj*_*ist 2 leaflet

我有一个包含几个标记的功能组.

我有这个代码来响应任何标记的点击:

        sampleFeatureGroup.on("click", function(){ 
            alert(this.id);  // something like this
        });
Run Code Online (Sandbox Code Playgroud)

我希望能够获得从函数内部点击的标记的id,但是"this"指的是功能组,所以我找不到点击标记的id,这看起来应该很容易但我无法弄清楚.

Ale*_*fan 6

您必须使用eachLayer迭代featureGroup,然后将函数绑定到click事件,如下所示:

group.eachLayer(function(layer) {
  layer.on('click', function(){
    alert(this._leaflet_id)
  });
});
Run Code Online (Sandbox Code Playgroud)

以下是Plunker的一个工作示例:http://plnkr.co/edit/4fh7vhVet8N0iD4GE3aN

而这里的参考eachLayer: http://leafletjs.com/reference.html#layergroup-eachlayer


Lon*_*Dev 5

尽管可以使用 检索 ID this._leaflet_id,但这不是最佳实践,因为前缀为 的变量_应被视为私有。

相反,最好使用getLayerId()如下所示的函数:

group.eachLayer(function(layer) {
  layer.on('click', function(){
    alert(group.getLayerId(layer))
  });
});
Run Code Online (Sandbox Code Playgroud)