Openlayers 3为了可见性而绑定到Vector层的复选框没有任何作用

Openlayers 3 A checkbox bound to a Vector layer for visibility is not doing anything

本文关键字:复选框 作用 任何 Vector 可见性 绑定 Openlayers      更新时间:2023-09-26

我试图将"可见"属性的复选框绑定到向量层,但它不起作用;easy指向发现我打字错误的人:)

问题是,这适用于ol.layer.File,但不适用于ol.layer.Vector,而且只有可见的复选框不起作用。"不透明"效果良好。

var list = document.getElementById('some-ul-element')
....
var li = document.createElement('li');
var checkbox = document.createElement('input');
checkbox.setAttribute('type','checkbox');
checkbox.setAttribute('checked',true);
li.appendChild(checkbox);
var label = document.createElement('label');
label.appendChild(document.createTextNode(layer.get("title")));
li.appendChild(label);
var range = document.createElement('input');
range.setAttribute('type','range');
range.setAttribute('min','0');
range.setAttribute('max','1');            
range.setAttribute('step','0.01');
range.setAttribute('value','1');
li.appendChild(range);
new ol.dom.Input(range).bindTo('value',layer,'opacity');
new ol.dom.Input(checkbox).bindTo('checked',layer,'visible');
....
list.appendChild(li)

适用于http://openlayers.org/en/master/examples/bind-input.html?mode=raw

var checkbox = document.createElement('input');
checkbox.setAttribute('type','checkbox');
new ol.dom.Input(checkbox).bindTo('checked',layer,'visible');
document.body.appendChild(checkbox);

你看了这个stackoverflow问题吗https://gis.stackexchange.com/questions/138364/layer-doesnt-turn-back-on-after-clicking-in-openlayers-3/139346#139346对于使用ol.dom.Input元素,还有一些替代解决方案。

问题是,我使用的地图是用这个选项声明的:

new ol.Map({ 
    ....
    renderer: ['dom','canvas','webgl'],
    ....
    }); 

这完全禁用了"setVisible",我甚至无法成功使用"layer.setVisible(false)"。

从ol中删除整个"renderer"键值对。实例化时的映射选项解决了这个问题。