أكثر

تحقق من أن طبقة Openlayers GeoJSON بالتنسيق الصحيح باستخدام OpenLayers.Protocol.HTTP call

تحقق من أن طبقة Openlayers GeoJSON بالتنسيق الصحيح باستخدام OpenLayers.Protocol.HTTP call


أنا جديد تمامًا على JavaScript و OpenLayers ، أحاول اكتشاف طريقة للتحقق من صحة الطبقة المستلمة باستخدام استدعاء OpenLayers.Protocol.HTTP. أريد التحقق من أنه بالتنسيق الصحيح (GeoJSON). لقد جربت وظيفة رد الاتصال ، ولا يبدو أنها تعمل. كما حاولت من خلال OpenLayers. Request.GET ولكن لا يمكنني إخطار المستخدم عندما يكون هناك خطأ في الاستعلام. أستطيع أن أرى أن طريقة GET تتحقق فقط إذا كانت قد أنشأت اتصالًا ولكن ليس إذا كان متجه GeoJSON لديه التنسيق الصحيح.

في البرنامج النصي test.php الذي تم استدعاؤه في معلمة URL ، يكون الإخراج في حالة نجاح الاستعلام عبارة عن طبقة GeoJSON وظيفية.

ما أحاول تحقيقه هو عندما لا ينجح الاستعلام ، (أرجع 0 صفوف).

لم تكن أي من التنبيهات التي جربتها مفيدة حتى الآن.

معالج الوظيفة (طلب) {alert (request.responseText) ؛ تنبيه (request.status) ؛ تنبيه (request.getAllResponseHeaders ()) ؛ var featurecollection = request.responseText ؛ var geojson_format = new OpenLayers.Format.GeoJSON () ؛ var geojson_vector = new OpenLayers.Layer.Vector () ؛ geojson_vector.addFeatures (geojson_format.read (featurecollection)) ؛ تنبيه (geojson_format.isValidType (request.responseText، "FeatureCollection")) ؛ تنبيه (geojson_format.extract.collection) ؛ if (geojson_format.read (request.responseText)) {alert ("CORRECTO. SI SE PUDO CONECTAR A" + geojson_layer.protocol.options.url) ؛ } else {alert ("ERROR. NO SE PUDO CONECTAR A" + geojson_layer.protocol.options.url)؛ }} تحديث الوظيفة (proy) {var request = OpenLayers.Request.GET ({url: "test.php؟ proyecto =" + proy، format: new OpenLayers.Format.GeoJSON ()، callback: handler})؛ إذا (geojson_layer) {geojson_layer.protocol.options.url = "test.php؟ proyecto =" + proy؛ geojson_layer.refresh ({force: true}) ؛ } else {geojson_layer = new OpenLayers.Layer.Vector ("Consulta" ، {styleMap: new OpenLayers.StyleMap ({"افتراضي": new OpenLayers.Style ({pointRadius: 15، fillColor: "# ffcc66"، fillOpacity: 0.2، strokeColor: "# ffff00"، strokeWidth: 2، strokeOpacity: 0.8})، "select": {fillColor: "# 8aeeef"، strokeColor: "# 32a8a9"، labelYOffset: 13، label: "$ {name}"} / / Text entspricht feature.attributes.name}) ، الإسقاط: OpenLayers.Project جديد ("EPSG: 4326") ، الاستراتيجيات: [new OpenLayers.Strategy.Fixed () ، new OpenLayers.Strategy.Refresh ({force: true ، active : true})]، protocol: new OpenLayers.Protocol.HTTP ({url: "test.php؟ proyecto =" + proy، format: new OpenLayers.Format.GeoJSON ()})})؛ map.addLayer (geojson_layer) ؛ }}