我一直在成功使用this CQL过滤器示例。 但是,我想进一步开发它,第一个目标是允许用户选择要过滤的层。为此,我在html表单上添加了另一个字段,其中列出了所有可用的图层。 现在的问题是:如何将该字符串用作CQL过滤器函数的变量? 我的代码如下所示:
function updateFilter() {
var cql = document.getElementById("cql");
// use a CQL parser for easy filter Validation
var format = new OpenLayers.Format.CQL();
//if filter exists, remove it
//This will also be useful when empty filter is present
if(Layer_to_Query.params.CQL_FILTER){
delete Layer_to_Query.params.CQL_FILTER;
}
var filter;
try {
filter = format.read(cql.value); //we are just checking if we can parse it
} catch (err) {
if(cql.value!=""){ //no need to give alert when filter is empty
alert("Filter cannot parsed");
}
}
if (filter) {
Layer_to_Query.mergeNewParams({'CQL_FILTER':cql.value}) //add the cql filter to the Layer
}
//redraw the layer
Layer_to_Query.redraw({force:true});
return false;
}
那么,关于如何将表单层名称作为Layer_to_Query传递给函数的任何想法? 提前致谢!
答案 0 :(得分:0)
这有点复杂,因为我无法看到您如何设置地图并将图层名称添加到表格等。基本上,您将不得不从地图中的列表返回图层对象。您可以递归搜索图层,直到找到与该字段中的名称匹配的图层。由于我不知道您的展示方式或您正在使用的库,我可以更具体或让您知道更好的方法。
无论哪种方式,这都需要进行一些编码,并且不会成为简单的几行代码答案。