Leaflet: أضف القدرة على تعيين أنماط css على DivIcon

تم إنشاؤها على ٦ يناير ٢٠١٧  ·  3تعليقات  ·  مصدر: Leaflet/Leaflet

أريد أن أكون قادرًا على تعيين أنماط css على DivIcon عندما أقوم بإنشائه.
في الوقت الحالي ، يمكنك فقط تكوين فئة css.

حالة الاستخدام:
لدي فئة css تحدد شكل رمز العلامة ، ولكن يتم تعيين لون الرمز ديناميكيًا بناءً على بيانات من قاعدة بيانات ، لذلك لا يمكن ترميزها في فئة css.

التعليق الأكثر فائدة

يمكن تغطية هذه الوظيفة بطريقة getElement() L.Marker ، على سبيل المثال:

var marker = new L.Marker(myCenter, {
  icon: L.divIcon()
});
map.addLayer(marker);

marker.getElement().style.border = '5px dotted lime';
marker.getElement().style.width = '50px';
marker.getElement().style.height = '50px';

انظر إلى مثال عملي .

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

L.DivIcon.CustomColor = L.DivIcon.extend({
    createIcon: function(oldIcon) {
           var icon = L.DivIcon.prototype.createIcon.call(this, oldIcon);
           icon.style.backgroundColor = this.options.color;
           return icon;
    }
})

أنا شخصياً لا أعتقد أن هذه ستكون ميزة مستخدمة على نطاق واسع ، لذلك سأغلق هذا الآن.

ال 3 كومينتر

مرحبا،
ماذا يعني لون الايقونة؟ قمت بتعيين لون الخلفية في css وقام DivIcon بتغيير اللون
screen shot 2017-01-06 at 6 10 18 pm

أليس هذا ما تحتاجه؟ هل يمكنك رجاء أن تكون أكثر تحديدا؟

مرحبا @ samik88 ،

كما حددت في حالة الاستخدام ، يتم استرداد اللون (رمز لون RGB) لرمز العلامة من قاعدة بيانات بإحداثيات العلامة ، لذلك لا يمكن تحديده في فئة css (للقيام بذلك ، سيتضمن إنشاء 16777215 فئات css (واحدة لكل رمز لوني rgb لا تشمل العتامة) ، وهو أمر غبي القيام به).

يمكنك تغيير المثال الخاص بك لرؤية حالة الاستخدام عن طريق إضافة حقل نص يمكنك إدخال لون rgb للعلامة وبعد ذلك ستجد أنه لا يمكنك تعيين ذلك على DivIcon وبالتالي لا يمكنك تغيير لون رمز العلامة.

قد يتطلب القيام بذلك أن تكون قادرًا على تعيين سمة نمط css على عنصر DIV الذي تم إنشاؤه

يمكن تغطية هذه الوظيفة بطريقة getElement() L.Marker ، على سبيل المثال:

var marker = new L.Marker(myCenter, {
  icon: L.divIcon()
});
map.addLayer(marker);

marker.getElement().style.border = '5px dotted lime';
marker.getElement().style.width = '50px';
marker.getElement().style.height = '50px';

انظر إلى مثال عملي .

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

L.DivIcon.CustomColor = L.DivIcon.extend({
    createIcon: function(oldIcon) {
           var icon = L.DivIcon.prototype.createIcon.call(this, oldIcon);
           icon.style.backgroundColor = this.options.color;
           return icon;
    }
})

أنا شخصياً لا أعتقد أن هذه ستكون ميزة مستخدمة على نطاق واسع ، لذلك سأغلق هذا الآن.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات