أكثر

طبقة إدراج OpenLayers 3 أسفل الطبقات الأخرى

طبقة إدراج OpenLayers 3 أسفل الطبقات الأخرى


لدي JSFiddle هذا الذي يمكنه تشغيل وإيقاف تشغيل بيانات OSM ، والمشكلة الوحيدة هي عندما تتم إضافتها مرة أخرى في الطبقة فوق كل شيء آخر.

أعلم أن هذا إصلاح بسيط نسبيًا باستخدام insertAt من مجموعة طبقات الخرائط ولكن يبدو أنني لا أجعله يعمل مع هذا المثال.map.insertAtفي المكان الخطأ؟


قدم OpenLayers 3.9 سمة الفهرس z لطبقات الخريطة ، والتي تتيح لك تحديد ترتيب رسم الطبقات. قبل 3.9 ، يتم رسم الطبقات بترتيب إضافتها إلى الخريطة ، كما لاحظت.

ومع ذلك ، يتم حل هذا النوع من المشكلات بشكل أكثر ملاءمة باستخدام ملفsetVisibileعلى الطبقة ، لأن كل ما تريد فعله هو التحكم في رؤيتها.

$ ('# addOSM'). on ('click'، function () {rasterLayer.setVisible (true)؛})؛ $ ('# removeOSM'). on ('click'، function () {rasterLayer.setVisible (false)؛})؛

إذا كنت لا تريد استخدام الأمر setVisible ، فيمكنك أيضًا إزالة الطبقة بالكامل.

// لإزالة الطبقة في الموضع 0 map.getLayers (). removeAt (0) ؛ / / لإضافته مرة أخرى إلى الموضع 0 (اسم الطبقة هو اسم المتغير الذي عينته للطبقة map.getLayers (). insertAt (0، layerName)؛

إذا لم تكن متأكدًا من موضع الطبقة ، فيمكنك التحقق منها عن طريق تشغيل:

لـ (var i = 0 ؛ i

شاهد الفيديو: Openlayers 6 Tutorial #6 - Layer Switcher