OpenLayers:如何打开图层的可见性?

时间:2014-07-30 12:07:21

标签: javascript openstreetmap openlayers-3

我无法理解我做错了什么?我想我写的一切都很好:

HTML代码如下:

    <b>&nbspSelect Area</b>
    <select id="mySelect_1" onchange="showSelectedArea();" > 
    <option selected disabled hidden value=''></option>"
    <option value="1">Center</option> 
    <option value="2">New jersey</option>
    </select>

,Javascript就是这样:

    layer1.setVisibility(false);    
    layer2.setVisibility(false);    
    layer3.setVisibility(false);
    layer4.setVisibility(false);    

    }

    function showSelectedArea() {

    var e = document.getElementById("mySelect_1");
    var valueEpilogi_1 = e.options[e.selectedIndex].value;

    if (valueEpilogi_1 == "1") {
          layer3.setVisibility(true);   
    }

    }

我不认为问题在于if或传递值,如果我设置true == true它仍然不会将可见性设置为true。我认为在select标记处触发函数存在问题。

请检查我的外部js文件并告诉我是什么问题?我在init函数中定义了所有运行onbody load的层?问题是什么? snk.to/f-cdh90xd4

1 个答案:

答案 0 :(得分:1)

您必须阅读选择尝试的值:

var valueEpilogi_1 = document.getElementById(&#39; mySelect_1&#39;)。value;

编辑: 如果你想使用&#39; layer&#39;在init()函数之外,它必须被定义为全局变量

示例:

function init(){
/* this variable is global, declaration without  'var' before, so it can be used out of the function*/
perioxes = new OpenLayers.Layer.Vector("Polygon Layer");
...
map.addLayer(perioxes); 
..
perioxes.setVisibility(false); 
...
}

function showSelectedArea() {

var valueEpilogi_1 = document.getElementById('mySelect_1').value ;

if (valueEpilogi_1 == "1") {
layer.setVisibility(true);   
}

}