L.control.layers和Leaflet.OpacityControls

时间:2017-06-19 05:14:50

标签: javascript ruby-on-rails leaflet

我有一张Leaflet地图,其中包含一系列覆盖层和使用L.control.layers设置的基础层。我想要一个不透明度滑块Leaflet.OpacityControls,它适用于所选图层,下面有基础层。

展望L.control.layers

for (var i = inputs.length - 1; i >= 0; i--) {
    input = inputs[i];
    layer = this._getLayer(input.layerId).layer;
    hasLayer = this._map.hasLayer(layer);

layer

layer = NewClass {_url: "http://crores.s3.amazonaws.com/tiles/bkm/{z}/{x}/{y}.png", options: Object, _events: Object, _initHooksCalled: true, _leaflet_id: 98}
<{1}}

中的

或更高版本

util.js

stamp: function (obj) { /*eslint-disable */ obj._leaflet_id = obj._leaflet_id || ++L.Util.lastId; return obj._leaflet_id;

obj

除了我不确定这是显示控制面板的一部分还是当前活动的覆盖层。在任何情况下,一旦页面完成加载,这些变量就不可用。他们可能是,但他们的问题的关键可能是如何访问它们。

不透明度滑块的示例是对覆盖层进行硬编码。

obj = NewClass {_url: "http://crores.s3.amazonaws.com/tiles/baistDetail/{z}/{x}/{y}.png", options: Object, _events: Object, _initHooksCalled: true, _leaflet_id: 100}

其中map.addControl(opacitySlider); opacitySlider.setOpacityLayer(overlay); overlay.setOpacity(0.5); 是Leaflet图层。如何将overlay设置为所选的叠加图? L.control.layers知道,但是如何将它传递给opacitySlider。

我无法相信这不是常见的需求,但却没有找到任何东西。

Leaflet.OpacityControls的相关部分:

overlay

我的网站未实施不透明度滑块:https://stark-cove-20051.herokuapp.com/streets/156。很多beta。

1 个答案:

答案 0 :(得分:0)

https://gis.stackexchange.com/questions/92677/getactivelayers-for-leafletjs

我记得要检查gis ......这是两年前的回答。天文尚未尝试过。回应是找到活动层。