أكثر

المنشور: قم بتغيير رمز العلامة من onEachFeature بدلاً من pointToLayer

المنشور: قم بتغيير رمز العلامة من onEachFeature بدلاً من pointToLayer


أنا أشير إلى البيانات الخارجية ، ومطابقتها مع حقول معينة في feature.properties وأستخدمها لتحديد الطبقة التي سيتم وضع الميزة فيها ، كل هذا من داخلonEachF Featureجزء.

onEachFeature: function (feature، layer) {… if (condition1) layer.addTo (layer1)؛ وإلا إذا (condition2) layer.addTo (layer2) ؛ آخر… }

أريد تعيين أيقونات / علامات مختلفة أيضًا في نفس العملية. لكني أرى أن العلامات المخصصة عادةً ما يتم تعيينها في ملفنقطة إلى طبقةجزء مثل:

pointToLayer: function (feature، latlng) {… if (condition1) return L.marker (latlng، {icon: icon1})؛ else if (condition2) return L.marker (latlng ، {icon: icon2}) ؛ آخر… }

(افترض أن icon1 و icon2 قد تم تعريفهما بالفعل على أنهماجديد L.icon ({…}))

سيصبح متكررًا حقًا ويستهلك المعالج / الشبكة للإشارة إلى البيانات الخارجية مرة أخرىنقطة إلى طبقة. هل هناك طريقة يمكنني من خلالها تحديد رمز الميزة من ملفonEachF Featureجزء من نفسه وليس عليك أن تمرنقطة إلى طبقة?

تحرير: وحتى العكس: هل من الممكن أن تفعل الأشياء التي تفعلها عادةonEachF Feature، فينقطة إلى طبقةفي حين أن؟ الطبقةالحجة ليست موجودة في معظم الاستخدامات ... هل يمكن تمريرها؟ لا حلقة نشرة من خلال كل ميزة لنقطة إلى طبقةبنفس الطريقة التي يعمل بهاonEachF Feature?


أستطيع أن أرى أن هذا سؤال قديم ، لكن ربما يمكن أن يساعد ذلك: استخدم طريقة setIcon في كل حالة:

onEachFeature: function (feature، layer) {… if (condition1) {layer.setIcon (icon1)؛ layer.addTo (layer1) ؛ } else if (condition2) {layer.setIcon (icon2)؛ layer.addTo (layer2) ؛ } آخر… }

شاهد الفيديو: كيفيه عمل باسورد لأي ملف