Mais

Ol3, CQL dinâmico para camada WFS (GeoJSON) do Geoserver

Ol3, CQL dinâmico para camada WFS (GeoJSON) do Geoserver


Meu mapa em Openlayers (Ol3) contém uma camada WFS com formato GeoJSON do Geoserver. Minha intenção é usar filtros CQL que possam ser aplicados pelo usuário através de comboboxes ao lado do mapa. O filtro CQL funciona inicialmente, mas não consigo fazer a camada recarregar com o CQL modificado, uma vez que o url da fonte do vetor muda. Talvez este método (modificar a url da fonte do vetor) nem seja a maneira correta de fazê-lo. A ideia é quase a mesma deste tutorial no Geoserver: http://docs.geoserver.org/stable/en/user/tutorials/cql/cql_tutorial.html#cql-tutorial

Após pressionar o botão "Aplicar" no tutorial, a camada se ajusta aos novos parâmetros. O tutorial, entretanto, usa WMS e o método updateParams () para atualizar os parâmetros que não funcionam para WFS. Minha pergunta é: Qual é o método adequado para atualizar os parâmetros em uma camada WFS?

Algum código:

município de var = 'Lund'; var vectorSource = new ol.source.Vector ({url: "http: // localhost: 8081 / geoserver / reporter / ows? service = WFS & version = 1.0.0 & request = GetFeature & typeName = reporter: gtest & CQL_FILTER = name =" + "'" + município + "'" + "& maxFeatures = 50 & outputFormat = aplicativo% 2Fjson", formato: novo ol.format.GeoJSON (),}); function reload () {municipal = document.getElementById ("Municipalityselector"). value; } … 

Uma vez que isso não foi respondido. Aqui está minha própria solução, que é muito simples e funciona bem.

A função "atualizar" limpa a fonte do vetor. A função "loader", que foi adicionada à fonte do vetor, atualizará automaticamente os recursos usando a url.

var vectorSource = new ol.source.Vector ({loader: function (extension, resolution, projection) {var url = "http: // localhost: 8081 / geoserver / reporter / ows? service = WFS & version = 1.0.0 & request = GetFeature & typeName = repórter: gtest & CQL_FILTER = "+ municipalselector.value +" & maxFeatures = 50 & outputFormat = application% 2Fjson "; $ .ajax (url) .then (function (response) {var features = geojsonFormat.readFeatures (response, {featureProjection: projection}); vectorSource .addFeatures (recursos);});}}); função update () {vectorSource.clear (true); }; …