DE:OSM mit Leaflet/HTML-Datei
Einleitung | Vorbereitung | HTML | CSS | JavaScript | Daten | Popup | ... | Plugin | Beispiele |
Erster Test
Marker
- 1 Marker (ausführlich)
- mehrere Marker, direkt im Code
- mehrere Marker, aus CSV
- mehrere Marker, aus GeoJSON
Tracks
- aus GPX
Je nach Anwendungsziel ist die HTML-Datei unterschiedlich aufgebaut.
Aufbau der HTML-Datei
Die HTML-datei beginnt immer mit <html>
und einleitenden Zeilen, gefolgt vom <head>
(Kopf) mit Festlegungen und einzubindenden Dateien und dem schliessenden </head>
, gefolgt vom (<body>
mit den darzustellenden Inhalten, und endet mit den abschliessenden Zeilen </body>
und </html>
.
<html>
<!-- einleitende Zeilen -->
<head>
<!-- wichtige Voreinstellungen -->
</head>
<body>
<!-- Sichtbarer Inhalt der Website -->
</body>
</html>
Marker
Die folgenden Code-Zeilen stehen immer im Code unserer folgenden Beispiele.
Voraussetzung: die Dateien "leaflet.css" und "leaflet.js" wurden heruntergeladen und liegen im Verzeichnis leaflet
Unser Minimal-Beispiel sieht so aus (Erklärung unten):
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Beispiel Leaflet Karte mit Marker</title>
<!-- leaflet.css und leaflet.js aus lokalem Verzeichnis /leaflet/ einbinden -->
<link rel='stylesheet' href='leaflet/leaflet.css' />
<script src='leaflet/leaflet.js'></script>
</head>
<body>
<div id='meineKarte' style='height: 800px; width: 100%;'></div>
<!-- OSM-Basiskarte einfügen und zentrieren -->
<script type='text/javascript'>
var Karte = L.map('meineKarte').setView([51.75840, 6.39612], 15);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
'attribution': 'Kartendaten © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> Mitwirkende',
'useCache': true
}).addTo(Karte);
</script>
<!-- Marker einfügen -->
<script>
var marker = L.marker([51.76148,6.39604]).addTo(Karte);
</script>
</body>
</html>
Einleitende Zeilen
<!DOCTYPE html>
- Ist eine Nachricht an den Validator, falls wir den Code prüfen lassen wollen, dass es sich hier um HTML-Code handelt.
<html lang="de">
- Jetzt beginnt der HTML-Code.
- Der durch den Code anzuzeigende Text der Kartenseite
lang=
ist deutsch"de"
. - Wenn du Englisch verwendest, schreibe
<html lang="en">
<head>
Im <head>
schreibst du die CSS- und JavaScript-Dateien rein, die wir für die Anzeige brauchen:
<meta charset="utf-8" />
- Hier wird der Zeichensatz ausgewählt. Mit UTF-8 werden alle Umlaute, Sonderzeichen und Zeichen aus fremden Schriftarten korrekt dargestellt.
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
- ... keine Ahnung was das bedeutet ...
<title>..</title>
- Hier wird der Titel der Karte angegeben, so wie ihn die Suchmaschine finden soll.
<!-- leaflet.css und leaflet.js aus lokalem Verzeichnis /leaflet/ einbinden -->
- Mit
<!--
beginnt in HTML ein Kommentar. Kommentare haben keinen Einfluss auf den Code, sie helfen aber beim Verstehen. - der Kommentar endet mit
-->
<link rel='stylesheet' href='leaflet/leaflet.css' />
- Bindet das Stylesheet "leaflet.css" aus dem lokalen Verzeichnis "leaflet" ein, damit die Anzeige hübsch aussieht.
- Dazu muss die Datei auf dem eigenen Server liegen: Leaflet herunterladen
<script src='leaflet/leaflet.js'></script>
- Bindet den JavaScript-Code "leaflet.js" aus dem lokalen Verzeichnis "leaflet" ein, damit wir die Leaflet-Tools nutzen können.
- Dazu muss die Datei auf dem eigenen Server liegen: Leaflet herunterladen
<body>
Im <body>
schreibst Du alles rein, das für die Anzeige erforderlich ist:
<div id='meineKarte' style='height: 800px; width: 100%;'></div>
- ... weiss nicht so recht, was das genau heisst ... <---- An den Autor dieser Zeile: Ich möchte dir jetzt nicht auf die Füße treten, und ich respektiere zwar deine Ehrlichkeit,
- aber wenn du schon nicht weißt "was das genau heisst", dann könntest du dir wenigstens die Mühe machen um das herauszufinden...
- Ein
<div>
-Element ist praktisch ein Container, der andere Elemente, wie Texte, Bilder, etc. aufnehmen kann um sie in einem gemeinsamen Bereich einzuschließen. - Mit dem 'id'-Attribut wird dem
<div>
-Element ein "Name" vergeben um dieses später nochmal ansprechen zu können. - Mit dem 'style'-Attribut kann das Aussehen des
<div>
-Elements mittels CSS (Cascading Style Sheets) angepasst werden. - In diesem Fall wird die Höhe (height) und die Breite/Länge (width) festgelegt.
- Es hat mich genau zwei Minuten gekostet das herauszufinden.
- Ich hoffe jetzt weiß jeder "was das genau heisst".
<!-- OSM-Basiskarte einfügen und zentrieren -->
- ein Kommentar für den nächsten Block.
<script type='text/javascript'>
<script>
ist der Beginn eines Code-Blocks in einer Programmiersprache,- type='text/javascript'> hier in JavaScript.
var Karte = L.map('meineKarte').setView([51.75840, 6.39612], 15);
var Karte = L.map('meineKarte').
?????- Der abschliessende Punkt bedeutet: jetzt folgt noch ein Befehl:
setView(..)
sagt, dass die Karte angezeigt werden soll[51.75840, 6.39612], 15);
die Karte wird zentriert [Koordinate in eckigen Klammern], danach der Zoomlevel, hier z=15.- Jede fertige Code-Zeile wird mit einem Strichpunkt ageschlossen.
(der folgende Code erstreckt sich über 4 Zeilen):
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
- Die Kacheln (tiles) der Karte kommen von "openstreetmap.org"
'attribution': 'Kartendaten © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> Mitwirkende',
'attribution'
ist der Hinweis auf die Lizenz der Kartendaten, mit einem Link zum Copyright-Text von OSM
Das Style-Sheetleaflet.css
(wird im<head>
geladen) macht, dass der Text in der Karte unten rechts angezeigt wird.'useCache': true
- Die Kacheln werden vorübergehend im Cache des Rechners gespeichert, und müssen nicht jedesmal neu geladen werden.
}).addTo(Karte);
- das alles wird jetzt im Fenster
Karte
angezeigt
</script>
- Ende des JavaScript-Blocks.
<!-- Marker einfügen -->
- Kommentar für den nächsten Block
<script>
- Beginn des nächsten Blocks.
var marker = L.marker([51.76148,6.39604]).addTo(Karte);
- Die Variable
marker
wird gefüllt mit dem BefehlL.marker(...)
, mit der Koordinate in eckigen Klammern,
gefolgt vom BefehladdTo(Karte)
</script>
- Ende des JavaScript-Blocks.
Basiskarte
Die Basiskarte wird mit folgendem Code eingebunden:
- Zeile 1: URL der Karte
- Zeile 2: Anzeigen der Karte
Basiskarte | Code | Bemerkungen |
---|---|---|
OpenStretMap.org | https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
|
Standard Carto-Style |
OpenStretMap.de | https://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png
|
Deutscher Carto-Style |
.. | ..
|
Nutzungsbedingungen
Nicht alle Kartenquellen haben die gleichen Nutzungsbedingungen. Im Zweifelsfall muss der jeweilige Anbieter angefragt werden. Für die "Kartenkacheln" (Tiles) im Standardstil ("Mapnik, Carto"), die auf openstreetmap.org angeboten werden, gelten die folgenden Bedingungen DE:Tile_usage_policy.
- Basiskarten von OSM
Für die Basiskarten von OSM werden die Nutzungsbedingungen automatisch passend in der Karte angezeigt, wenn folgender Code verwendet wird:
{
'attribution': 'Kartendaten © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> Mitwirkende',
'useCache': true
}