J'ai du mal à comprendre pourquoi la méthode Leaflet setstyle
changera la couleur d'un polygone mais pas la couleur de mes marqueurs.
Le polygone fonctionne bien:
Mais les marqueurs ne changeront pas de couleurs:
Je veux pouvoir passer la souris sur un marqueur et changer sa couleur. Il semblait que setStyle ferait cela. Mais je continuelayer.setStyle is not a function
J'utilise Angular et Leaflet ensemble pour faire la carte (j'utilise la directive angular-leaflet).
Voici la partie survolée du code:
$scope.$on("leafletDirectiveMap.geojsonMouseover", function (ev, leafletEvent) {
pointMouseover(leafletEvent);
});
function pointMouseover(leafletEvent) {
var layer = leafletEvent.target;
layer.setStyle({
weight: 2,
color: '#666',
fillColor: 'white'
});
}
Lorsque le marqueur est survolé, il se déclenche pointMousever
et essaie ensuite d'appeler setStyle sur LeafletEvent.target. J'ai console.logged le LeafletEvent et il y a en effet la partie Target:
Pourquoi setStyle fonctionnerait-il pour le polygone et non pour le marqueur? Comment changer la couleur du marqueur?
Réponses:
Il semble que vous ne puissiez pas faire cela car un marqueur utilise une image pour le rendu.
Je pense que vous auriez besoin de saisir la classe d'icônes de votre marqueur et de changer l'attribut "iconUrl" en n'importe quelle nouvelle image que vous voulez.
Source: Référence de l'API Leaflet
J'espère que cela pourra aider,
DR
la source
Compris grâce à une lecture de la documentation.
Le polygone dans la brochure répond
setStyle
mais le marqueur peut être changé en utilisantsetIcon
Documentation pour setIcon
la source
Voir la réponse de Kyle Pennell:
Vous pouvez utiliser les lignes suivantes:
la source
Vous pouvez le faire sans avoir à créer un million d'images d'icônes différentes si vous utilisez CSS.
C'est ici:
la source
En combinant la réponse de Ricky avec /programming/7415872/change-color-of-png-image-via-css , nous pouvons faire quelque chose comme:
Vous pouvez également jouer avec
saturate()
etbrightness()
pour obtenir plus de couleurs.Comme mentionné dans la réponse à cette question, il n'est pas pris en charge dans tous les navigateurs: https://caniuse.com/#feat=css-filters
la source