【问题标题】:WMS Layer as variable on CQL filter?WMS 层作为 CQL 过滤器上的变量?
【发布时间】:2013-12-06 13:02:49
【问题描述】:

我一直在使用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 传递的任何想法? 提前致谢!

【问题讨论】:

    标签: openlayers geoserver


    【解决方案1】:

    这有点复杂,因为我看不到您是如何设置地图并将图层名称添加到表单等的。基本上,您将不得不从地图的列表中返回图层对象。您可以递归搜索层,直到找到与字段中的名称匹配的层。由于我不知道您的显示方式或您使用的库,我无法更具体或让您知道任何更好的方法。

    无论哪种方式,这都需要一点编码,而不是简单的几行代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多