wien

Wien Beispiel HOWTO (Teil 2) - GeoJSON asynchron laden und default Visualisierung

bevor wir loslegen, deaktivieren wir das Overlay für den Stephansdom samt dem Marker mit einem mehrzeiligen Kommentar

/*
let sightLayer = L.featureGroup();
layerControl.addOverlay(sightLayer, "Sehenswürdigkeiten");

let mrk = L.marker([ stephansdom.lat, stephansdom.lng]).addTo(sightLayer);

sightLayer.addTo(map);
*/

🔗 COMMIT

GeoJSON als Datenformat

a) was ist GeoJSON?

b) wie sieht so ein Real World Beispiel aus?

Sidestep: Javascript Funktionen

Eine Funktion ist vereinfacht gesagt ein Codeblock mit einem Namen, der “irgend etwas tut” wenn wir ihn aufrufen. Beim Aufruf können wir Parameter für “das Tun” innerhalb der Funktion mitschicken und wenn der Codeblock abgearbeitet ist, kann die Funktion auch wieder einen einzelnen Wert, einen Array oder eine Objekt zurückliefern.

b) GeoJSON-Daten asynchron mit einer Funktion laden

c) GeoJSON-Daten mit L.geoJSON() visualisieren

Zum Visualisieren benötigen wir noch eine Zeile Code. Wir verwenden die Leaflet Methode L.geoJSON, die wir in der Leaflet Dokumentation unter Other Layers / GeoJSON finden. Im Abschnitt Factory sehen wir, dass wir das GeoJSON-Objekt als ersten Parameter übergeben können, die Optionen brauchen wir vorerst nicht. Wie schon bei früheren Layern, verwenden wir .addTo(map) um den GeoJSON-Layer an die Karte zu hängen.

async function loadSites(url) {
    // ...
    L.geoJSON(geojson).addTo(map);
}

🔗 COMMIT

Die Marker für die Sehenswürdigkeiten sind damit auf der Karte sichtbar

d) den GeoJSON-Layer in ein Overlay schreiben

Noch eleganter ist es, den GeoJSON-Layer in ein eigenes Overlay zu schreiben. Vor dem L.geoJSON-Aufruf definieren wir das Overlay als L.featureGroup, fügen es zur Karte hinzu und hängen es mit einem Label in die Layercontrol ein

let overlay = L.featureGroup();
layerControl.addOverlay(overlay, "Sehenswürdigkeiten");
overlay.addTo(map);

Den L.geoJSON() Layer müssen wir jetzt nur noch in das Overlay und nicht in die Karte direkt schreiben

L.geoJSON(geojson).addTo(overlay);

🔗 COMMIT

Damit kann der Sehenswürdigkeiten Layer ein- und ausgeschaltet werden

Übungsaufgabe: wir erstellen 4 weitere Layer

Über die Suche bei DigitalesWien finden wir Layer und implementieren sie mit den jeweiligen Vorgaben

  1. Funktion loadStops
    • Suche: sightseeing
    • Datensatz Touristische Kraftfahrlinien Haltestellen Vienna Sightseeing Linie Standorte Wien
    • Overlay Label “Haltestellen Vienna Sightseeing”

    • 🔗 COMMIT
  2. Funktion loadLines
    • Suche: sightseeing
    • Datensatz Touristische Kraftfahrlinien Liniennetz Vienna Sightseeing Linie Wien
    • Overlay Label “Liniennetz Vienna Sightseeing”

    • 🔗 COMMIT
  3. Funktion loadZones
    • Suche: Fußgängerzonen
    • Datensatz Fußgängerzonen Wien
    • Overlay Label “Fußgängerzonen”

    • 🔗 COMMIT
  4. Funktion loadHotels
    • Suche: Hotels
    • Datensatz Hotels und Unterkünfte Standorte Wien
    • Overlay Label “Hotels und Unterkünfte”

    • 🔗 COMMIT