أكثر

إضافة ميزة تعادل إلى الطبقة الموجودة

إضافة ميزة تعادل إلى الطبقة الموجودة


-طبقة تحتوي على ميزات متعددة - أرغب في رسم ميزات جديدة بهاOpenLayers.Control.DrawFeature الجديدوإضافتها إلى طبقي.

var control = new OpenLayers.Control.DrawFeature (layer، OpenLayers.Handler.Polygon) ؛ control.events.register ('featureadded'، control، function (f) {f.feature.state = OpenLayers.State.INSERT؛ f.feature.attributes.Geo_ID = 794؛ saveStrategy.save ()؛})؛

عند إضافة الميزة ، يتم إرسال ملف xml إلى الخادم الجغرافي بالمحتوى التالي:

       363183.0625 5770740.875 363192.0625 5770755.375 363177.5625 5770764.375 363168.5625 5770749.875 363183.0625 5770740.875 794

لا يتم حفظ الإحداثيات في الخادم الجغرافي ، فقط ملفالميزة: Geo_IDجزء.

إذا اخترت عنصرًا موجودًا لإدراجه في قاعدة بيانات الخادم الجغرافي بدلاً من ذلك:

control.events.register ('featureadded'، control، function (f) {layer.features [0] .state = OpenLayers.State.INSERT؛ f.feature.state = OpenLayers.State.INSERT؛ f.feature.attributes. Geo_ID = 795 ؛ saveStrategy.save () ؛}) ؛

أحصل على XML التالي في الطلب:

        363273.29099999997 5770863.855 363273.177000001 5770864.300999998 363274.1561700017 5770864.5512810005 363274.2701699999 5770864.105281 363273.29099999997 5770863.855 795

ويتم إدراج الإحداثيات في قاعدة بيانات الخادم الجغرافي.

أرى اختلافًا رئيسيًا واحدًا بين هذين النوعين من XML:

يحتوي إدخال XML لعنصر موجود من الطبقة على علامتين أخريين:

و

كيف يمكنني أن أجعل التطبيق يعرف أن الميزات المضافة برسم مضلع ستعامل بنفس الطريقة وتوضع في نفس تنسيق الميزات الموجودة بالفعل في قاعدة البيانات؟


ما اكتشفته أخيرًا أنه ساعد:

f.feature.geometry = new OpenLayers.Geometry.MultiPolygon (f.feature.geometry) ؛

ربما تفشل لأنك تحاول إدراج مضلع في طبقة WFS وهي من النوع متعدد المضلعات. سأجرب الخيار "متعدد" من http://dev.openlayers.org/docs/files/OpenLayers/Control/DrawFeature-js.html

متعددة

{منطقي} إرسال الميزات إلى أشكال هندسية متعددة الأجزاء قبل المرور إلى الطبقة. الافتراضي هو خطأ.


شاهد الفيديو: مراجعة Xiaomi Redmi 9A. موصفات ومميزات وعيوب شاومي ردمي a9