Es fällt mir schwer herauszufinden, warum die Leaflet-Methode setstyle
die Farbe eines Polygons ändert, aber nicht die Farbe meiner Marker.
Polygon funktioniert gut:
Die Markierungen ändern jedoch nicht die Farben:
Ich möchte in der Lage sein, einen Marker mit der Maus zu bewegen und seine Farbe zu ändern. Es schien, als würde setStyle dies tun. Aber ich bekomme immerlayer.setStyle is not a function
Ich verwende Angular und Leaflet zusammen, um die Karte zu erstellen (ich verwende die Angular-Leaflet-Direktive).
Hier ist der Mouseover-Teil des Codes:
$scope.$on("leafletDirectiveMap.geojsonMouseover", function (ev, leafletEvent) {
pointMouseover(leafletEvent);
});
function pointMouseover(leafletEvent) {
var layer = leafletEvent.target;
layer.setStyle({
weight: 2,
color: '#666',
fillColor: 'white'
});
}
Wenn der Marker mit der Maus darüber bewegt wird, wird er ausgelöst pointMousever
und versucht dann, setStyle auf dem LeafletEvent.target aufzurufen. Ich habe console.logged das LeafletEvent und es gibt tatsächlich den Zielteil davon:
Warum sollte setStyle für das Polygon und nicht für den Marker funktionieren? Wie kann man die Farbe des Markers ändern?
Antworten:
Scheint, als könnten Sie das nicht tun, weil ein Marker ein Bild zum Rendern verwendet.
Ich glaube , Sie müssen das packen Symbol Klasse Ihres Marker und die „iconUrl“ -Attribut auf , was Sie wollen neues Bild ändern.
Quelle: Faltblatt-API-Referenz
Ich hoffe, das hilft,
DR
quelle
Ich habe es dank einiger Dokumentationslesungen herausgefunden.
Das Polygon in der Packungsbeilage reagiert auf,
setStyle
aber die Markierung kann mit geändert werdensetIcon
Dokumentation für setIcon
quelle
Siehe Kyle Pennells Antwort:
Sie können folgende Zeilen verwenden:
quelle
Sie können dies tun, ohne eine Million verschiedener Symbolbilder erstellen zu müssen, wenn Sie CSS verwenden.
Hier ist es:
quelle
Wenn wir Rickys Antwort mit /programming/7415872/change-color-of-png-image-via-css kombinieren , können wir Folgendes tun:
Sie können auch mit
saturate()
und spielenbrightness()
, um mehr Farben zu erhalten.Wie in der Antwort auf diese Frage erwähnt, wird es nicht in allen Browsern unterstützt: https://caniuse.com/#feat=css-filters
quelle