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 
Fragesteller
 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?

0
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.

0
QQwertz123 
Fragesteller
 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});
});
1