Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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:如何打开图层的可见性?_Javascript_Openstreetmap_Openlayers 3 - Fatal编程技术网

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

Javascript OpenLayers:如何打开图层的可见性?,javascript,openstreetmap,openlayers-3,Javascript,Openstreetmap,Openlayers 3,我不明白我做错了什么?我想我写的每件事都写得很好: HTML代码如下所示: <b>&nbspSelect Area</b> <select id="mySelect_1" onchange="showSelectedArea();" > <option selected disabled hidden value=''></option>" <option value="1">Cen

我不明白我做错了什么?我想我写的每件事都写得很好:

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>
我认为问题不在于if或传递值,如果我设置true==true,它仍然不会将可见性设置为true。我认为在select标记处触发函数有问题


请检查我的外部js文件并告诉我问题出在哪里??我在init函数中定义了所有在body load上运行的层,这是问题吗?snk.to/f-cdh90xd4

您必须读取选择的值并尝试:

var valueEpilogi_1=document.getElementById('mySelect_1')。值

编辑: 如果要在init()函数之外使用“layer”,则必须将其定义为全局变量

例如:

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);   
}

}

我试过你的解决办法,但没用。我看不出我的代码有什么不同。这真的很烦人,我两天来一直在想办法您在JS控制台中遇到错误了吗?检查初始化函数中的变量layer3是否为全局变量。我的朋友thom,我认为这是问题所在,但由于我缺乏经验,我无法确定。我仍然没有找到解决方案。请检查我的js外部文件:snk.to/f-cdh90xd4??如何使层成为全局的?非常感谢,你告诉我的关于在没有var的情况下声明变量的事情非常有用,并且为我做到了。这适用于所有js变量还是仅适用于openlayers?看起来你在询问之前没有试图缩小问题的范围,如果没有一个工作示例,就不可能为其他人进行调查(犹太教?)。你有地图吗?如果你不先禁用图层的可见性,图层会出现吗?只有使用了
layer3
?你如何创建图层?你如何创建地图?看起来你也可以从熟悉浏览器的调试器中获益。是的,JSFIDLE会非常有用。伙计们,对不起,我我对编程真的很陌生,我是一名机械工程专业的学生,这对我来说都是新鲜事。什么是jsfidle?我的意思是我应该发布什么?伙计们,很抱歉我是一个失败者。请帮助,这是我的第一个堆栈溢出问题。如果它们被打开,我会得到一个地图和图层。所有这些都按照计划进行。我有一个基本图层OSM图层另外三个由几何点组成,一个是多边形,一个是线串,另一个是由几何点组成的标记!我在函数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);   
}

}