Leaflet: Tambahkan kemampuan untuk mengatur gaya css di DivIcon

Dibuat pada 6 Jan 2017  ·  3Komentar  ·  Sumber: Leaflet/Leaflet

Saya ingin dapat mengatur gaya css pada DivIcon saat saya membuatnya.
Saat ini Anda hanya dapat mengonfigurasi kelas css.

Kasus penggunaan:
Saya memiliki kelas css yang mendefinisikan bentuk ikon penanda, tetapi warna ikon diatur secara dinamis berdasarkan data dari database, jadi tidak dapat dikodekan secara keras di kelas css.

Komentar yang paling membantu

Fungsionalitas ini dapat dicakup oleh metode getElement() dari L.Marker , misalnya:

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';

Lihat contoh kerja .

Ini agak kasus tepi, jadi saya lebih suka merekomendasikan memperluas kelas L.DivIcon untuk menambahkan beberapa gaya kustom, baca tutorial tentang menulis plugin. Itu akan menjadi sesuatu seperti

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;
    }
})

Saya pribadi tidak berpikir bahwa ini akan menjadi fitur yang banyak digunakan, jadi saya akan menutup ini untuk saat ini.

Semua 3 komentar

Hai,
apa arti dari warna icon? Saya mengatur warna latar belakang di css dan DivIcon mengubah warnanya
screen shot 2017-01-06 at 6 10 18 pm

bukankah itu yang kamu butuhkan? bisa tolong lebih spesifik?

Hai @samik88 ,

Seperti yang saya tentukan dalam kasus penggunaan, warna (kode warna RGB) dari ikon penanda diambil dari database dengan koordinat penanda, jadi tidak mungkin untuk mendefinisikannya di kelas css (untuk melakukannya akan melibatkan pembuatan 16777215 kelas css (satu untuk setiap kode warna rgb tidak termasuk opacity), yang akan menjadi hal yang bodoh untuk dilakukan).

Anda dapat mengubah contoh Anda untuk melihat kasus penggunaan dengan menambahkan bidang teks yang dapat Anda masukkan warna rgb untuk penanda dan kemudian Anda akan menemukan bahwa Anda tidak dapat mengaturnya pada DivIcon sehingga tidak dapat mengubah warna ikon penanda.

Untuk melakukan itu akan melibatkan kemampuan untuk mengatur atribut gaya css pada DIV yang dihasilkan

Fungsionalitas ini dapat dicakup oleh metode getElement() dari L.Marker , misalnya:

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';

Lihat contoh kerja .

Ini agak kasus tepi, jadi saya lebih suka merekomendasikan memperluas kelas L.DivIcon untuk menambahkan beberapa gaya kustom, baca tutorial tentang menulis plugin. Itu akan menjadi sesuatu seperti

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;
    }
})

Saya pribadi tidak berpikir bahwa ini akan menjadi fitur yang banyak digunakan, jadi saya akan menutup ini untuk saat ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat