Daha çox

Bu vərəqə WFS tələbinə məhdudlaşdırıcı qutu filtri necə əlavə olunur?


Bu funksiyanı vərəqə tətbiqimə interaktiv bir qat əlavə etmək üçün istifadə edirəm. Əksər brauzerlərdə əla işləyir, lakin müəyyən şəbəkələrdə və brauzerlərdə vaxt bitmə xətası səbəbindən uğursuz olur. Düşündüyüm həll bu funksiyaya bir məhdudlaşdırıcı qutu filtri əlavə etməkdir. Kimsə mənə məlumatı harada tapacağımı və ya bunu necə edəcəyimi deyə bilərmi?

var rootUrl = 'http://map.kecoviewer.com/geoserver/ows'; var defaultParameters = {service: 'WFS', version: '1.1.0', request: 'GetFeature', typeName: 'cresh: datazones_popup_mini', maxFeatures: 6505, outputFormat: 'text / javascript', format_options: 'callback: getJson ', srsName:' EPSG: 4326 '}; var parametrləri = L.Util.extend (defaultParameters); $ .ajax ({jsonp: false, url: rootUrl + L.Util.getParamString (parametrlər), dataType: 'jsonp', jsonpCallback: 'getJson', uğur: handleJson}); var group = new L.featureGroup (). addTo (map); var geojsonlayer; var featureLayer = yeni L.GeoJSON (); var defaultStyle = {ağırlıq: 0, qeyri-şəffaflıq: 0, fillOpacity: 0}; var brightStyle = {color: '# f7f90e', çəki: 3, qeyri-şəffaflıq: 1, fillOpacity: 0}; var currentlayer; function handleJson (data) {geojsonlayer = L.geoJson (data, {onEachFeature: function (feature, layer) {layer.setStyle (defaultStyle); (function (layer, Properties) {layer.on ("click", function (e ) {if (currentlayer) currentlayer.setStyle (defaultStyle); layer.setStyle (highlightStyle); window.open ("http:  /  / map.kecoviewer.com  / birtviewer  / run? __ report = report  / datazone_story_ig. rptdesign & Datazone = "+ properties.dz," story ") currentlayer = layer;});}) (layer, feature.properties);}}). addTo (group); } getJson (data) function {console.log ("geri çağırma funksiyası işə salındı"); }

Wfs yükləməyə başlayacağınız bir dəqiqə yaxınlaşdırmağı tövsiyə edirəm. Sonra xəritənin hərəkət hadisəsini dinləyin və bu dərəcəni GetFeature-Request-in bir hissəsi etmək üçün cari dərəcəni tutun:

burada işləyən jsfiddle: http://jsfiddle.net/expedio/n5rsdhha/

(və ya tam ekran: http://jsfiddle.net/expedio/n5rsdhha/embedded/result/… burada start-zoom bəlkə də daha yüksək ola bilər)

və burada vacib javascript hissəsi:

var start_at_zoom = 8; function onEachFeature (xüsusiyyət, qat) {// bu xüsusiyyətin dz adlı bir xüsusiyyəti varmı? əgər (feature.properties && feature.properties.dz) {layer.bindPopup (feature.properties.dz); }} var featureLayer = yeni L.GeoJSON (null, {onEachFeature: onEachFeature}). addTo (map); load_wfs (); function loadGeoJson (data) {// console.log (data); xüsusiyyətLayer.clearLayers (); xüsusiyyətLayer.addData (məlumat); } map.on ('moveend', load_wfs); function load_wfs () {if (map.getZoom ()> start_at_zoom) {var geoJsonUrl = 'http://map.kecoviewer.com/geoserver/wfs'; var defaultParameters = {service: 'WFS', version: '1.0.0', request: 'getFeature', typeName: 'cresh: datazones_popup_mini', maxFeatures: 3000, outputFormat: 'text / javascript', format_options: 'callback: getJson ', srsName:' EPSG: 4326 '}; var customParams = {bbox: map.getBounds (). toBBoxString ()}; var parametrləri = L.Util.extend (defaultParameters, customParams); console.log (geoJsonUrl + L.Util.getParamString (parametrlər)); $ .ajax ({jsonp: false, url: geoJsonUrl + L.Util.getParamString (parametrlər), dataType: 'jsonp', jsonpCallback: 'getJson', uğur: loadGeoJson}); } else {alert ("çoxbucaqları görmək üçün zəhmət olmasa yaxınlaşdırın!"); xüsusiyyətLayer.clearLayers (); }}