我想通过按钮更改OpenLayers图层的可见性(以及其他一些内容)。当我通过jQuery在按钮点击事件上调用anyLayer.setVisibility(" true")时它正在工作:
$("#anyLayer_button").click(function(){
anyLayer.setVisibility("true");
}
但是当我想使用优秀的jQuery函数为许多层执行此操作时,因此使用变量firebug调用Ol层告诉我" anyLayer.setVisibility不是函数"。
function superiorFunction(anylayer) {
$("#" + anyLayer + "_button").click(function(){
anyLayer.setVisibility("true");
otherFunction1(anyLayer);
otherFunction2(anyLayer);
});
}
其他(jQuery)函数在函数内工作没有任何问题。 如何解决这个问题?
答案 0 :(得分:1)
我觉得你将错误的参数传递给第二个函数:
function superiorFunction(anylayer) { $("#" + anyLayer + "_button").click(function(){ anyLayer.setVisibility("true"); otherFunction1(anyLayer); otherFunction2(anyLayer); }); }
如果您传递的anylayer
参数是字符串,那么anyLayer.setVisibility("true");
会导致错误,因为字符串没有setVisibility()
方法......
我认为你真正想要的是一个带有图层名称的函数(用于构造注册事件的按钮的id)和图层本身:
function superiorFunction(anyLayer_name, anyLayer) {
$("#" + anyLayer_name + "_button").click(function(){
anyLayer.setVisibility("true");
otherFunction1(anyLayer);
otherFunction2(anyLayer);
});
}
答案 1 :(得分:0)
我找到了解决方案:
而不是
anyLayer.setVisibility("true");
我使用getLayerByName函数调用图层。它给出了一个数组,我从中选择第一个(和单个)元素:
var layerArray = map.getLayersByName(layer);
layerArray[0].setVisibility('true');