Слой WMS как переменная в фильтре CQL?

Я успешно использовал этот пример фильтра 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 в функцию? Заранее спасибо!


person fgbrandao    schedule 06.12.2013    source источник


Ответы (1)


Это немного сложно, так как я не вижу, как вы настроили свою карту и добавили имена слоев в свою форму и т. Д. По сути, вам придется вернуть объект слоя из списка на вашей карте. Вы можете рекурсивно выполнять поиск по слоям, пока не найдете тот, который соответствует имени, указанному в поле. Поскольку я не знаю, как вы отображаете или какие библиотеки вы используете, я не могу быть более конкретным или сообщить вам о каких-либо лучших способах.

В любом случае это потребует небольшого количества кода и не будет простой парой строк кода.

person Darkcylde    schedule 05.02.2014