我在Leaflet中有两层。每层都是具有51个要素的美国geoJSON地图。
我在两个鼠标悬停时都附加了一个事件处理程序:
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以确定其来自哪个组图层?
您可以轻松创建一个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
});
});