传单:如何控制图层组的不透明度?

Leaflet: How to control opacity of Layer Groups?

有专家知道如何更改图层组每个tilemap不透明度吗? ] 通过使用 HTML-滑块输入?

例如:我有几个瓷砖地图,可以使用 Lealet 的 Layercontrol 按钮进行切换,如下所示:Leaflet Layer Groups。 使用不透明度滑块时,我想使每个图块地图变暗,不只是一个 实际处于活动状态。例如:我将 map1 调暗到 0.5 然后切换到map2,它的不透明度应该也已经是0.5了。并且当使用滑块将 map2 的不透明度更改为 0.8 并切换回 map1 时,map1 应该已经再次具有不透明度 0.8(而不是之前调整的值 0.5)

我知道如何实现滑块控件以及如何使用命令

更改 单个 tilemap 的不透明度
nameOfMaplayer.setOpacity(opacityValue);

但我不知道如何使用 Leaflet 的方法引用 所有瓦片地图的 Pane/Grid Layer/array 以同时更改地图的窗格不透明度而不是每个单独的 tilemaps 的不透明度。

我想最后我自己找到了一个满意的答案:

如果我们想改变 tilePane 的不透明度 (= basemap-layers AND overlaymap-layers):

map.getPane('tilePane').style.opacity = 0.5;

但这有一个缺点,即 Overlay-tilemaps 也会变暗,这是我想避免的。

我的首选方法是仅更改 活动 basemap-layer 的不透明度。由于 Leaflet 不支持获取活动底图图层,因此您必须使用 "Activelayers"-Plugin 并使用其方法:

ctrLayer = L.control.activeLayers(baseMaps, overlayMaps, {position: 'topright'}).addTo(map);
.....
tilemapLayer = ctrLayer.getActiveBaseLayer().layer;
tilemapLayer.setOpacity(actualOpacityValue);

每次更改底图时,您必须运行后面的 2 个命令将新底图的不透明度更改为实际使用的不透明度值。