أكثر

استخدام OpenLayers 3 forEachFeatureAtPixel لتحديد الطبقة؟


يجب أن أوضح أولاً أن مهاراتي في جافا سكريبت هي تقريبًا نفس مهاراتي في اللغة الإسبانية. أنا أعرف بالكاد ما يكفي لأوقع نفسي في المشاكل ثم أذهب للبحث عن المساعدة. على أي حال ، لدي تطبيق به بضع طبقات geoJSON. لقد قمت بإنشاء دالة map.forEachFeatureAtPixel لتحديث div ببعض المعلومات.

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

وظيفة:

var displayFeatureInfo = وظيفة (بكسل) {var feature = map.forEachFeatureAtPixel (بكسل ، وظيفة (ميزة ، طبقة) {return feature؛}) ؛ var info = document.getElementById ('info') ؛ إذا (ميزة) {info.innerHTML = '

'+ feature.get (' Name ') +'

' + '
API:
"+ feature.get ('API') + '
' + '
حالة:
'+ feature.get (' Status ') +'
' + '
قانوني :
'+ feature.get (' Legal ') +'
' + '
اسم الموقع:
'+ feature.get (' Site_Name ') +'
"+" ؛ } else {info.innerHTML = ''؛ } إذا (الميزة! == تسليط الضوء) {إذا (تسليط الضوء) {featureOverlay.removeFeature (تسليط الضوء) ؛ } if (feature) {featureOverlay.addFeature (feature)؛ } تسليط الضوء = ميزة ؛ }}؛

يمكنك استعمال الopt_layerFilterحجة للكل ميزة. راجع الوثائق على http://openlayers.org/en/master/apidoc/ol.Map.html#forEachFeatureAtPixel.

على سبيل المثال ، إذاناقلات طبقةهي إشارة إلى الطبقة التي تريد اكتشاف المعالم فيها ، وسوف تستخدم ما يلي:

var feature = map.forEachFeatureAtPixel (بكسل ، وظيفة (ميزة ، طبقة) {ميزة العودة ؛} ، فارغة ، وظيفة (طبقة) {طبقة الإرجاع === vectorLayer ؛}) ؛

مع طبقات "وظيفة التصفية" التي ليست كذلكناقلات طبقةسيتم تصفيته.