OpenLayers setOpacity 在 selectFeature 中出现多个图层时失败

OpenLayers setOpacity fails with multiple layers in selectFeature

本文关键字:图层 失败 setOpacity selectFeature OpenLayers      更新时间:2023-09-26

Using OpenLayers 2.13.我有一个包含 2 个矢量图层的地图,以及一个允许调整图层不透明度的 JQuery 滑块。

如果我设置了一个选择器来包含两个图层(用于突出显示和弹出窗口),则用于调整不透明度的 JQuery 滑块不起作用(layername.setOpacity(x) 无法设置图层的不透明度)。如果只有一个图层参与选择器,则设置不透明度工作正常。两个图层使用相同的样式映射。

$("#slider-id").slider({
value: 70,
min: 10,
max: 100,
step: 10,
slide: function(e, ui) {
    layer1.setOpacity(ui.value / 100);
    layer2.setOpacity(ui.value / 100);
} });

此选择器允许为两个图层设置不透明度:

var selector = new OpenLayers.Control.SelectFeature(layer1,{ 
hover:false
});

但是这个选择器不会(setOpacity()无论如何都会失败):

var selector = new OpenLayers.Control.SelectFeature([layer1, layer2],{ 
hover:false
});

选择器已添加并激活。

map.addControl(selector);
selector.handlers.feature.stopDown = false; //allow dragging on map
selector.activate();

有没有办法让多个图层参与选择器,同时允许更改不透明度?

回答您自己的问题可能是一种不好的形式,但我找到了一种解决方法,并将其发布在这里给其他有此问题的人。

在更改不透明度之前停用选择器。

$("#slider-id").slider({
value: 70,
min: 10,
max: 100,
step: 10,
slide: function(e, ui) {
    selector.deactivate();
    layer1.setOpacity(ui.value / 100);
    layer2.setOpacity(ui.value / 100);
    selector.activate();
}