Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript OpenLayers setOpacity因selectFeature中的多个层而失败_Javascript_Jquery_Openlayers - Fatal编程技术网

Javascript OpenLayers setOpacity因selectFeature中的多个层而失败

Javascript OpenLayers setOpacity因selectFeature中的多个层而失败,javascript,jquery,openlayers,Javascript,Jquery,Openlayers,使用OpenLayers 2.13。我有一个带有2个矢量层的地图,还有一个JQuery滑块,可以调整层的不透明度 如果我将选择器设置为同时包含这两个层(用于高亮显示和弹出窗口),则用于调整不透明度的JQuery滑块不起作用(layername.setOpacity(x)无法设置层的不透明度)。如果只有一个层参与选择器,则setOpacity工作正常。两个图层使用相同的样式图 $("#slider-id").slider({ value: 70, min: 10, max: 100, step:

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

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

$("#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()都会失败):

将添加并激活选择器

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