Daha çox

OpenLayers 3 -də url parametrlərini (CQL_FILTER) necə yeniləmək olar

OpenLayers 3 -də url parametrlərini (CQL_FILTER) necə yeniləmək olar


CQL Filtri ilə bir vektor təbəqəsi quruluşum var:

vectorSource = yeni ol.source.Vector ({loader: funksiya (ölçü, qətnamə, proyeksiya) {var url = 'http: // server01: 8080/geoserver/wfs? service = WFS &' + 'version = 1.1.0 & request = GetFeature & ' +' typename = sf: TABLE01 & ' +' CQL_FILTER = ID = 355 & ' +' outputFormat = text /javascript & ' +' format_options = callback: gotFetch '; // jQuery -nin "geri çağırma" əlavə etməsinin qarşısını almaq üçün jsonp: false istifadə edin / $ parametri / $ .ajax ({url: url, dataType: 'jsonp', jsonp: false});}});

İstifadəçinin bir düyməni basmasını və yuxarıdakı id -i 455 -ə yeniləməsini istəyirəm (son CQL_FILTER məlumatları ilə təbəqəni yeniləmək istəyirəm):

CQL_FILTER = ID = 455

Və sonra təbəqəni yeniləyin. WFS Layerini necə yeniləyə bilərəm?

(Ayrıca markerlər qurduğum üçün wfs qatına ehtiyacım var, WMS qatından istifadə edə bilmirəm)

Bu işləmədi (gotFetch çağırılmadı):

var params = {CQL_FILTER: 'ID = 455'}; vectorSource.updateParams (parametrlər);

CQL filtrini yükləyici funksiyasından kənar bir dəyişəndə ​​saxlaya və zəng edə bilərsinizvectorSource.clear (doğru)CQL filtrini dəyişdirdikdən sonra.

Bu kimi bir şey:

var cqlFilter = 'ID = 355'; var urlTemplate = 'http: // server01: 8080/geoserver/wfs? service = WFS &' + 'version = 1.1.0 & request = GetFeature &' + 'typename = sf: TABLE01 &' + 'CQL_FILTER = {{CQLFILTER}} &' + 'outputFormat = text/javascript &' + 'format_options = callback: gotFetch'; var vectorSource = yeni ol.source.Vector ({yükləyici: funksiya (ölçü, qətnamə, proyeksiya) {var url = urlTemplate.replace ('{{CQLFILTER}}', cqlFilter); $ .ajax ({url: url, dataType) : 'jsonp', jsonp: false});}}); funksiya changeFilter () {cqlFilter = 'ID = 455'; vectorSource.clear (doğru); }