Wie kann ich Polygone in Leaflet beim hovern mit der Maus highlighten?

1 Antwort

Ich denke, dass die Dokumentation Hilfe genug sein sollte.

https://leafletjs.com/reference-1.7.1.html#polygon

1) Polygon kreieren und der Karte hinzufügen:

const coordinates = // array with coordinates (latitude/longitude)
const polygon = L.polygon(coordinates, { fill: true });
polygon.addTo(map);

2) Listener an Polygon anhängen:

polygon.on("mouseover", function() {
  polygon.fillColor = "#ff0000";
  polygon.opacity = 1;
});
polygon.on("mouseout", function() {
  polygon.fillColor = "#3388ff";
  polygon.opacity = 0.2;
});

Bei mouseout werden wieder die Standardwerte zugewiesen.


QQwertz123 
Beitragsersteller
 05.07.2021, 15:45

Okay ich habe es hinbekommen man muss "setStyle" noch dazu schreiben

polygon.on('mouseover', function() {
      polygon.setStyle({Color: 'red'});  
      polygon.setStyle({fillColor: '#F05320A'});
      polygon.setStyle({fillOpacity: 1});
});
QQwertz123 
Beitragsersteller
 05.07.2021, 14:36

Ich verstehs noch immer nicht so recht. Ich kann doch ein Polygon auch so kreieren :

var polygon = L.polygon([
              [-50, 10], [50, 10], [50, 50], [-50, 50]]
              ).addTo(map);

Wieso klappt das dann nicht wenn ich den Listener dann drunter schreibe?

regex9  05.07.2021, 15:42
@QQwertz123

Diese Methodik unterscheidet sich nicht sonderlich von der, die ich in meiner Antwort zeige. Ich gebe zur Sicherheit nur noch ein style-Property mit, welches sicherstellt, dass das Polygon mit Farbe ausgefüllt werden kann. Denn laut Dokumentation ist dessen Standardwert unbestimmt.

Ach, und was mir gerade auffällt: Der Aufruf von addTo sollte wohl besser separat getätigt werden, damit polygon auf ein Polygon zeigt und nicht undefined. Siehe in meiner Antwort oben.

Jetzt registrieren und Teil der größten deutschsprachigen Community werden!