OpenLayers setOpacity失败,selectFeature中有多个图层

时间:2015-02-02 19:01:29

标签: javascript jquery openlayers

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

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

$("#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();

是否有某种方法让多个图层参与选择器,同时允许更改不透明度?

1 个答案:

答案 0 :(得分:0)

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

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

$("#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();
}