أكثر

كيف يمكن إضافة مرشح الصندوق المحيط لطلب WFS لهذه النشرة؟

كيف يمكن إضافة مرشح الصندوق المحيط لطلب WFS لهذه النشرة؟


أستخدم هذه الوظيفة لإضافة طبقة تفاعلية إلى تطبيق المنشور الخاص بي. إنه يعمل بشكل رائع في معظم المتصفحات ، لكنه يفشل بسبب خطأ انتهاء المهلة في بعض الشبكات والمتصفحات. أعتقد أن الحل هو إضافة مرشح مربع محيط لهذه الوظيفة. هل يمكن لأي شخص أن يخبرني أين أجد المعلومات أو كيف أفعل ذلك؟

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 = L.Util.extend (معلمات افتراضية) ؛ $ .ajax ({jsonp: false، url: rootUrl + L.Util.getParamString (parameters)، dataType: 'jsonp'، jsonpCallback: 'getJson'، success: handleJson})؛ var group = new L.featureGroup (). addTo (map) ؛ فار جيوسونلاير var featureLayer = جديد L.GeoJSON () ؛ var defaultStyle = {weight: 0، opacity: 0، fillOpacity: 0} ؛ var HighlightStyle = {color: '# f7f90e' ، الوزن: 3 ، التعتيم: 1 ، سعة التعبئة: 0} ؛ فار الحالي 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 (lightStyle) ؛ window.open ("http:  /  / map.kecoviewer.com  / birtviewer  / run؟ __ report = report  / datazone_story_ig. rptdesign & Datazone = "+ properties.dz،" story ") currentlayer = layer؛})؛}) (layer، feature.properties) ؛}}). addTo (مجموعة) ؛ } function getJson (data) {console.log ("تفعيل وظيفة رد الاتصال")؛ }

أوصي بتعيين تكبير / تصغير دقيق حيث تبدأ في تحميل wfs. ثم استمع إلى حدث النقل للخريطة وانتزع المدى الحالي لجعل هذا النطاق جزءًا من طلب GetFeature:

العمل jsfiddle هنا: http://jsfiddle.net/expedio/n5rsdhha/

(أو ملء الشاشة: http://jsfiddle.net/expedio/n5rsdhha/embedded/result/… هنا ربما يكون تكبير / تصغير البدء أعلى من ذلك)

وجزء جافا سكريبت مهم هنا:

var start_at_zoom = 8 ؛ function onEachFeature (feature، layer) {// هل هذه الميزة لها خاصية تسمى dz؟ إذا (feature.properties && feature.properties.dz) {layer.bindPopup (feature.properties.dz) ؛ }} var featureLayer = new L.GeoJSON (null، {onEachFeature: onEachFeature}). addTo (map)؛ load_wfs () ، function loadGeoJson (data) {// console.log (data) ؛ featureLayer.clearLayers () ، featureLayer.addData (بيانات) ؛ } 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 = L.Util.extend (defaultParameters ، customParams) ؛ console.log (geoJsonUrl + L.Util.getParamString (parameters)) ؛ $ .ajax ({jsonp: false، url: geoJsonUrl + L.Util.getParamString (parameters)، dataType: 'jsonp'، jsonpCallback: 'getJson'، Success: loadGeoJson})؛ } else {alert ("الرجاء التكبير لرؤية المضلعات!")؛ featureLayer.clearLayers () ، }}

شاهد الفيديو: أحصل على أكثر من 8000 محطة مع تطبيق رائع إحترافي نزله الأن قبل الحدف