【问题标题】:Leaflet: How to control opacity of Layer Groups?传单:如何控制图层组的不透明度?
【发布时间】:2017-01-20 17:37:52
【问题描述】:

是否有专家知道如何通过使用 HTML 滑块输入来更改 Layer Group每个 tilemapopacity

例如:我有几个瓦片地图,可以使用 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 的方法到 所有瓦片地图的窗格/网格层/数组来更改地图的窗格不透明度,而不是同时计算每个瓦片地图的不透明度。

【问题讨论】:

    标签: maps leaflet opacity layer


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

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