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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在单击时获取要素组中的图层ID相关的知识,希望对你有一定的参考价值。

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

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

        sampleFeatureGroup.on("click", function(){ 
            alert(this.id);  // something like this
        });

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

答案

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

group.eachLayer(function(layer) {
  layer.on('click', function(){
    alert(this._leaflet_id)
  });
});

这是关于Plunker的一个工作示例:http://plnkr.co/edit/4fh7vhVet8N0iD4GE3aN

这里是对eachLayer的引用:http://leafletjs.com/reference.html#layergroup-eachlayer

另一答案

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

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

group.eachLayer(function(layer) {
  layer.on('click', function(){
    alert(group.getLayerId(layer))
  });
});

以上是关于如何在单击时获取要素组中的图层ID的主要内容,如果未能解决你的问题,请参考以下文章

在点击时从多个Geoserver图层获取要素属性 - 打开图层3

ARCGIS面图层中,快速筛选出某个字段中的某些数数值的图斑

arcmap中如何把一个图层中的要素复制到另一个图层上

engine如何实现按字段属性选择要素

gis如何把多点图层转化为单点图层

ArcMap无法编辑遇到一个或多个带有错误或警告的图层,无法继续,需要怎么才能解决