【问题标题】:How do I get the leaflet layer group ID?如何获取传单图层组 ID?
【发布时间】:2020-03-05 23:39:50
【问题描述】:

我在 Leaflet 中有两层。每层都是美国的 geoJSON 地图,有 51 个特征。

我在 mouseout 上附加了一个事件处理程序:

function resetHighlight(e, whichLayer) {
    if (whichLayer == terpsLayer) {
        console.log('reset');
        layerTerps.resetStyle(e.target);
    } else if (whichLayer == lawsLayer) {
        layerLaws.resetStyle(e.target);
    }
}

function onEachFeature(feature, layer) {
    layer.on({
        mouseout: function(e) {
           resetHighlight(e, layer);
        }
    });
}

这在创建 geoJSON 层时在典型的 onEachFeature 函数中调用。

我不知道如何让 whichLayer 代表 geoJSON 层,而不是单个 51 个特征之一。例如,如果您单击一个要素,您如何让 Leaflet 识别它来自哪个图层组?

【问题讨论】:

    标签: javascript leaflet geojson


    【解决方案1】:

    您可以致电hasLayer(layer)查看您的图层在哪个图层组中。

    layerGroup1 = new L.LayerGroup();
    layerGroup2 = new L.LayerGroup();
    
    function getLayerGroup(layer){
        if(layerGroup1.hasLayer(layer)){
            return layerGroup1;
        }else if(layerGroup2.hasLayer(layer)){
            return layerGroup2;
        }else{
            return null;
        }
    } 
    

    【讨论】:

      【解决方案2】:

      您可以轻松地创建一个 LayerGroup 并将两个图层添加到其中,如下所示:

      layerGroup = new L.LayerGroup()
      layerGroup.addLayer(Layer1)
      layerGroup.addLayer(Layer2)
      

      然后循环通过LayerGroup获取层ID并循环遍历每一层以获取特征ID,如下所示:

      layerGroup.eachLayer(function (layer) {
          const layerId = layerGroup.getLayerId(layer)
          layer.eachLayer(function (layer) {
              const FeatureId = layer.feature.properties.Id
          });
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-28
        • 1970-01-01
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多