أكثر

إضافة مضلع إلى خريطة OpenLayers3 مع الإحداثيات المقروءة من سلسلة

إضافة مضلع إلى خريطة OpenLayers3 مع الإحداثيات المقروءة من سلسلة


لدي مجموعة من الأوتار كسلسلة مقروءة من نتيجة طلب wps. أريد عرض هذه الإحداثيات كطبقة جديدة تضاف إلى الخريطة الحالية. ما أفعله هو تقسيم السلسلة باحتواء مسافات ودفعها إلى مصفوفة جديدة. بعد ذلك ، أقوم بالتكرار عبر المصفوفة الجديدة حتى أتمكن من دفع الإحداثيات كنقاط إلى مصفوفة أخرى بالتنسيق المطلوب ([lat ، lng]). بعد ذلك ، أريد إنشاء LinearRing من هذه النقاط وإضافة LinearRing كطبقة إلى خريطتي.

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

إليك أيضًا JSFiddle: http://jsfiddle.net/wbuao2p0/

(وظيفة () {احداثيات فار = "+55.8634874529136 +9.631500051342137 +55.805972364525914 +9.548784637840715 +55.14482340752173 +8.898109926807917" + "+54.37485632537419 +8.380764572779743 +53.522573247162796 +8.014555510194093 +52.617309603810206 +7.812087589403351" + "+52.614355746887576 +7.811710003292555 +51.66694415234981 +7.781187272498014 +50.730797466775236 +7.930015192081321" + "+49.83956156468691 +8.252844765368144 +49.82531948437923 +8.259592481571666 +48.98935698950589 +8.76078730159239" + "+48.26651544342399 +9.414644808782137 +47.68426367900724 +10.196317645257878 +47.46134051972574 +10.663796677950817 "+" +47.44527206667563 +10.65618066872225 47.41854993523704 +10.712559712068128 +47.3779293363187 +10.838713359827098 "+" +47.26472795130263 +11.076101319594834 +47.235921788657656 11.18904832359383 +47.1275340000139 +11.464071852121915 "+" 47.12667976005475 +11.466644260434636 +47.03711564154165 11،874958636180834 +46.94893974756699 +12.137476538757129 "+" +46.946391533519524 +12.148647883992075 +46.862762846216015 +12.617094197216767 +46.86208001538398 +12.62235562376322 "+" +46.84835634771807 +12.808810685839008 +46.82885100873644 +12.887922280925599 +46.82587936285959 +12.913514148562475 "+" +46.79313271854955 +13.569218084395681 +46.793186122964315 +13.572597910595023 +46.7968282660043 +13.70010684882963 "+" +46.797469135075175 +13.715610737856597 +46.91313241762351 +14.597643499712868 +46.91482995915892 +14.605253829988193 "+" +46.94051690258967 +14.714615522672169 +46.94470162532205 +14.731573765998991 +47.03965181587298 +15.065926800025096 "+" +47.04076570697014 +15.069386735528871 +47.0971543190374 +15.234595324698322 +47.10921639411892 +15.26801495448744 "+ "47.53141273642792 +16.154028894640344 +48.118553671058436 16،940499476725634 +48.848016177433216 +17.59712334576924" + "+49.691693468376144 +18.098600246883922 +50.0169553372784 +18.21353961428459 +50.21523496552912 +18.31453702415812" + "+50.58776747601728 18،415250273922293 50.61707796761752 +18.42560786478932 +50.636347014984715 +18.428383633035153" + "+51.21296112952 521 +18.58426984350083 +51.25002091258902 +18.590269409720722 +52.29453665661267 +18.64849965595591 "+" +53.32830647762536 +18.488113065951357 +53.33169011267799 +18.487217561626725 +54.11128417393963 +18.210077908740885 "+" +54.4364395173484 +18.02938155363006 +54.71055010763587 +17.908084827583007 +54.720762056373424 +17.902155827076 "+" +54.915291540051065 +17.761731176118456 +55.13242755798435 +17.647555434158786 +55.47662158526144 +17.356524858903985 "+" +55.52396504913427 +17.32234911719236 +55.549477740903995 +17.29976990766246 +55.59558289581277 +17.255938050595006 "+" +55.96238666471352 +16.945789984652894 +56.621093859451975 +16.08126023006796 +56.62137995797971 +16.08078530361504 "+" 56،823246738627674 +15.711335621037726 +56.862438825053665 +15.631824322664553 +56.924133989456976 +15.50198578534042 "+" +56.959278380671066 +15.425195193787415 57.28134660084014 +14.48342212176854 +57.41049116093812 +13.49651476024982 "+" 57.34159450394165 +12.503580871072169 +57.07738676862414 +11.543967026746685 +57.06553491005662 +11.513261639456314 "+" 56،971780105418375 +11.335268426462179 56.97028222323641 11،331469925786793 +56.63980353567406 +10.649832439979386 "+" 56.21014282052663 +10.025943431541371 +56.189078059345206 9،999836585481649 +56.074375041474674 +9.881733124306075 "+" +55.9879654682174 9،753913025766153 55،8634874529136 +9.631500051342137 ". var style = new ol.style.Style ({image: new ol.style.Icon (/ **type {olx.style.IconOptions} * / ({anchor: [0.5، 46]، anchorXUnits: 'fraction'، anchorYUnits: 'pixels'، opacity: 0.75، src: 'http://ol3js.org/en/master/examples/data/icon.png ">

لا توجد مشاكل مع الإحداثيات المدرجة في التعليمات البرمجية الخاصة بك. المشكلة هي كيف أدرجتهم. يسير تحويل الإحداثيات بسلاسة بقدر ما أستطيع رؤيته ، لكنني غيرت أسلوب التكرار الخاص بك إلى تقنيتي ، لأنه بالنسبة لي ، كان الأسلوب المتضمن في كمانته غريبًا بعض الشيء (آمل ألا يؤدي ذلك إلى حدوث ارتباك).

كانت المشكلة الأولى في الجزء الذي قمت بإنشاء المضلع. يحتاج المضلع إلى مصفوفة من الإحداثيات ، ولكن بما أن لديك بالفعل مصفوفة من الإحداثيات ، يمكنك لفها في مصفوفة واحدة:

var feature = new ol.Feature ({geometry: new ol.geom.Polygon ([Points])}) ؛

المشكلة الثانية كانت مع التصميم. لقد قدمت نمط نقطة واحدة في كائن النمط المخصص الخاص بك ، لذلك تم تعيين رموز الخط والمضلع على قيمة خالية. يجب عليك أيضًا تضمين بعض خيارات التعبئة والحد ، أو في المثال أدناه ، فقط اترك معلمة النمط من المصدر.

مثال JSFiddle


يجب عليك التحقق من تحولك للإحداثيات. هذا ما حصلت عليه من console.log (النقاط [0])

[1072173.6812907949, -15779360.632217405]

هل هذا صحيح (الطرح)؟

تحديث: نظرًا لأن الإحداثيات التي تم التعامل معها هي سلاسل يلزمك تحويلها: مثلرقم (الدقة [0] [i])

لست متأكدًا مما تريد القيام به مع [الدقة [0] [i + = 1] ولكن إذا قمت بذلك ، فستحتاج إلى تقييد الحد في الحلقة المقدمة أو ستحصل على NaN في الإحداثيات الأخيرة. شيء مثلأنا <الدقة [0]. الطول -2يمكن. نظرًا لأن الإحداثيات الأخيرة مفقودة ، فأنت بحاجة إلى تعديل الإدخال الخاص بك على ما أعتقد.

هذا ما حاولت.

var res = [] ؛ فار نقاط = [] ؛ res.push (coords.split ("")) ؛ // كرر المصفوفة الجديدة وادفع زوج إحداثيات إلى مصفوفة جديدة لـ (var i = 0؛ i 

أبعد من ذلك ، لست متأكدًا من الطريقة التي تريد بها إنشاء مضلع من إحداثياتك. إذا قمت بإنشاء LineString بدلاً من Polygon ، فسترى ما أتحدث عنه. http://jsfiddle.net/wbuao2p0/1/

أنا لست مهتمًا بتلك الأشياء الهندسية في Ol3. لذا لايمكنك مساعدتك في ذلك.


شاهد الفيديو: Angular-Openlayers Part 3: Working with custom markers