首页 > 解决方案 > 如何获取传单图层组 ID?

问题描述

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

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

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

标签: javascriptleafletgeojson

解决方案


您可以调用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;
    }
} 

推荐阅读