Leaflet: Ajouter la possibilité de définir des styles CSS sur DivIcon

Créé le 6 janv. 2017  ·  3Commentaires  ·  Source: Leaflet/Leaflet

Je veux pouvoir définir des styles CSS sur un DivIcon lorsque je le crée.
Pour le moment, vous ne pouvez configurer qu'une classe CSS.

Cas d'utilisation:
J'ai une classe CSS définissant la forme de l'icône du marqueur, mais la couleur de l'icône est définie de manière dynamique en fonction des données d'une base de données, elle ne peut donc pas être codée en dur dans une classe CSS.

Commentaire le plus utile

Cette fonctionnalité peut être couverte par la méthode getElement() de L.Marker , par exemple :

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

Voir un exemple de travail .

C'est un peu un cas limite, donc je recommanderais plutôt d'étendre la classe L.DivIcon pour ajouter un style personnalisé, lisez les tutoriels sur l'écriture de plugins. Ce serait quelque chose comme

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

Personnellement, je ne pense pas que ce serait une fonctionnalité largement utilisée, je vais donc la fermer pour le moment.

Tous les 3 commentaires

Salut,
que signifie la couleur de l'icône ? J'ai mis la couleur de fond en css et le DivIcon a changé la couleur
screen shot 2017-01-06 at 6 10 18 pm

n'est-ce pas ce qu'il te faut ? pouvez-vous s'il vous plaît être plus précis?

Salut @samik88 ,

Comme je l'ai précisé dans le cas d'utilisation, la couleur (un code couleur RVB) de l'icône du marqueur est récupérée dans une base de données avec les coordonnées du marqueur, il n'est donc pas possible de la définir dans une classe css (pour cela, il faudrait créer 16777215 classes css (une pour chaque code de couleur rvb sans compter l'opacité), ce qui serait une chose stupide à faire).

Vous pouvez modifier votre exemple pour voir le cas d'utilisation en ajoutant un champ de texte dans lequel vous pouvez entrer une couleur RVB pour le marqueur, puis vous constaterez que vous ne pouvez pas le définir sur le DivIcon et que vous ne pouvez donc pas modifier la couleur de l'icône du marqueur.

Pour ce faire, il faudrait pouvoir définir l'attribut de style css sur le DIV généré

Cette fonctionnalité peut être couverte par la méthode getElement() de L.Marker , par exemple :

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

Voir un exemple de travail .

C'est un peu un cas limite, donc je recommanderais plutôt d'étendre la classe L.DivIcon pour ajouter un style personnalisé, lisez les tutoriels sur l'écriture de plugins. Ce serait quelque chose comme

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

Personnellement, je ne pense pas que ce serait une fonctionnalité largement utilisée, je vais donc la fermer pour le moment.

Cette page vous a été utile?
0 / 5 - 0 notes