简单的OpenLayers函数在jQuery函数中不起作用

时间:2014-06-20 14:44:56

标签: javascript jquery openlayers

我想通过按钮更改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)函数在函数内工作没有任何问题。 如何解决这个问题?

2 个答案:

答案 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');