Widget:Leaflet: Unterschied zwischen den Versionen
HorstR (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
HorstR (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 5: | Zeile 5: | ||
[[Kategorie:Schule]] | [[Kategorie:Schule]] | ||
|?Name=name | |?Name=name | ||
|?Schultyp=typ | |||
|?Koordinaten.Latitude=lat | |?Koordinaten.Latitude=lat | ||
|?Koordinaten.Longitude=lon | |?Koordinaten.Longitude=lon | ||
| Zeile 19: | Zeile 20: | ||
<script> | <script> | ||
//<nowiki> | |||
(function(){ | (function(){ | ||
var raw = document.getElementById('smw-data').textContent.trim(); | var raw = document.getElementById('smw-data').textContent.trim(); | ||
| Zeile 41: | Zeile 43: | ||
var map = L.map('map').setView([50.94, 6.96], 11); | var map = L.map('map').setView([50.94, 6.96], 11); | ||
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { | L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { | ||
maxZoom: 18, | maxZoom: 18, | ||
| Zeile 72: | Zeile 75: | ||
}); | }); | ||
// | // Layer-Control anzeigen | ||
L.control.layers(null, { | L.control.layers(null, { | ||
"Grundschulen": clusters.Grundschule, | "Grundschulen": clusters.Grundschule, | ||
"Gymnasien": | "Gymnasien": clusters.Gymnasium, | ||
"Gesamtschulen": clusters.Gesamtschule, | "Gesamtschulen": clusters.Gesamtschule, | ||
"Berufskollegs": clusters.Berufskolleg, | "Berufskollegs": clusters.Berufskolleg, | ||
"Förderschulen": clusters.Förderschule | "Förderschulen": clusters.Förderschule | ||
}, {collapsed:false}).addTo(map); | }, {collapsed:false}).addTo(map); | ||
// Standard-Layer aktiv setzen | |||
clusters.Grundschule.addTo(map); | |||
clusters.Gymnasium.addTo(map); | |||
if (bounds.length) { | if (bounds.length) { | ||
| Zeile 90: | Zeile 93: | ||
})(); | })(); | ||
//</nowiki> | |||
// | |||
</script> | </script> | ||
Version vom 7. Dezember 2025, 17:06 Uhr
<script id="smw-data" type="application/json"> JSON </script>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.3/dist/leaflet.css"/> <script src="https://unpkg.com/leaflet@1.9.3/dist/leaflet.js"></script> <script src="https://unpkg.com/leaflet.markercluster@1.5.3/dist/leaflet.markercluster.js"></script> <link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.css"/> <link rel="stylesheet" href="https://unpkg.com/leaflet.markercluster@1.5.3/dist/MarkerCluster.Default.css"/>
<script> // (function(){ var raw = document.getElementById('smw-data').textContent.trim(); if (!raw) return; var data = JSON.parse(raw); var schoolData = []; if (data.results) { for (var key in data.results) { if (!data.results.hasOwnProperty(key)) continue; var rec = data.results[key]; var po = rec.printouts || {}; var coords = (po.Koordinaten && po.Koordinaten[0]) ? po.Koordinaten[0] : null; var typ = (po.Schultyp && po.Schultyp[0]) ? po.Schultyp[0] : ''; schoolData.push({ link: rec.fulltext || key, Schultyp: typ, Koordinaten: coords }); } } var map = L.map('map').setView([50.94, 6.96], 11); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 18, attribution: '© OpenStreetMap contributors' }).addTo(map); var clusters = { Grundschule: L.markerClusterGroup(), Gymnasium: L.markerClusterGroup(), Gesamtschule: L.markerClusterGroup(), Berufskolleg: L.markerClusterGroup(), Förderschule: L.markerClusterGroup() }; var bounds = []; schoolData.forEach(function(s){ if (!s.Koordinaten) return; var parts = s.Koordinaten.split(','); if (parts.length !== 2) return; var lat = parseFloat(parts[0]), lon = parseFloat(parts[1]); if (isNaN(lat) || isNaN(lon)) return; var marker = L.marker([lat, lon]) .bindPopup('<strong>' + s.link + '</strong><br>' + s.Schultyp); var layer = clusters[s.Schultyp] || clusters.Grundschule; layer.addLayer(marker); bounds.push([lat, lon]); }); // Layer-Control anzeigen L.control.layers(null, { "Grundschulen": clusters.Grundschule, "Gymnasien": clusters.Gymnasium, "Gesamtschulen": clusters.Gesamtschule, "Berufskollegs": clusters.Berufskolleg, "Förderschulen": clusters.Förderschule }, {collapsed:false}).addTo(map); // Standard-Layer aktiv setzen clusters.Grundschule.addTo(map); clusters.Gymnasium.addTo(map); if (bounds.length) { map.fitBounds(bounds); } })(); // </script>
