Как получить идентификатор группы слоя листовок? - PullRequest
1 голос
/ 06 марта 2020

У меня есть два слоя в Leaflet. Каждый слой представляет собой географическую карту США с 51 характеристикой.

Я подключаю обработчик событий при наведении мыши на оба:

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 при создании слоя geo JSON.

Я не могу понять, как получить whichLayer для представления слоя geo JSON вместо одной из отдельных 51 функций. Если вы, например, нажимаете на элемент, как вы можете получить Leaflet, чтобы определить, из какого он группового слоя?

Ответы [ 2 ]

1 голос
/ 06 марта 2020

Вы можете позвонить 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;
    }
} 
0 голосов
/ 06 марта 2020

Вы можете легко создать LayerGroup и добавить к ней оба слоя следующим образом:

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

Затем l oop через LayerGroup, чтобы получить идентификатор слоя, и l oop через каждый слой, чтобы получить Идентификатор функции выглядит так:

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