Diese Seite trägt zur Organisation unserer Arbeit bei. |
Dieser Artikel enthält technische Hintergrundinformationen zum Skript Gadget-MapTools.js.
Das Skript fügt mehrere Erweiterungen zu den Kartendarstellung hinzu. Dazu gehört, dass mit dem GeoData-Indikator eine Karte in den Artikel eingefügt werden kann.
Benötigte Bibliotheken
[Bearbeiten]- Mediawiki
- jQuery core
- ext.kartographer.box
- ext.kartographer.wv
- oojs-ui-core
- Liste der deutschen Wikivoyage-Artikel:
Verwendbarkeit
[Bearbeiten]- Unterstützte Skins
- alle.
- Eignung für andere Wikis
- geeignet nur für Wikivoyage. Internationalisierung ist vorbereitet.
- Zwingend erforderlich
- Das umschließende Tag der Marker (Wrapper-Tag, class: vcard) für {{Marker}} und {{vCard}} muss die spezifizierten Attribute
data-color
für die Farbe,data-symbol
für den Symboltyp unddata-name
für den Namen der Einrichtung enthalten. - Für die Indikator-Karte muss es (mindestens) ein Tag mit der Klasse
wv-coord-indicator
geben, wobei das erste vorkommende Tag die Angabendata-lon
,data-lat
unddata-zoom
enthalten muss. Ein derartiges Tag wird z. B. durch die Vorlage {{GeoData}} erzeugt. Im Skin Minerva können keine Indikatoren angelegt werden.
- Browser-Unterstützung
- alle modernen Browser
- Die Unterstützung für den Internet Explorer wurde am 4. Februar 2023 eingestellt. Der Hersteller Microsoft hat den Support für diesen Browser eingestellt.
- Eignung für mobile Geräte
- ja.
Aufruf
[Bearbeiten]- Das Skript ist als Helferlein eingebunden.
Maximaler Zoom-Level
[Bearbeiten]In den Skripten:
definiert die Variable maxZoomLevel
den deximal möglichen Zoom-Level. Er beträgt gegenwärtig 19.
Benötigte Dateien
[Bearbeiten]Funktionen
[Bearbeiten]Hauptfunktionen
[Bearbeiten]var init = function()
Die Initialisierungsfunktion ruft nach dem Laden externer Kartendaten von OpenStreetMap und Wikimedia Commons über getKartographerLiveData();
nachfolgende Hauptfunktionen nacheinander auf.
var getData = function()
Diese Funktion liest die Kartendaten aus dem Artikel. Zuerst wird versucht, die JavaScript-Variable wgKartographerLiveData
auszulesen. Wenn diese Variable fehlt oder nur leere Arrays enthält, werden die Kartendaten aus den {{Marker}}- und {{vCard}}-Vorlagen entnommen. In letzterem Fall werden nur Einzelkoordinaten, aber keine Masken und Shapes erfasst, da diese nicht im HTML-Quelltext vorhanden sind.
Sind keine Kartendaten vorhanden, wird ein Marker auf den Kartenmittelpunkt gesetzt.
var indicatorMap = function()
Diese Funktion sucht nach dem Geo-Indikator anhand des Klassenattributs wv-coord-indicator
. Die Indikator-Abbildung, eine Erdkugel, mit dem Klassenattribut map-globe-default
wird ausgeblendet und die Abbildung mit dem Klassenattribut map-globe-js
eingeblendet. Die letztere Abbildung erhält einen Event-Handler zum Öffnen und Schließen einer Karte am Artikelanfang.
Für die Karte wird dazu ein Container mit der id wv-topMap
angelegt.
var nearbyMap = function()
Diese Funktion versieht HTML-span-Codes der Art:
<span class="wv-open-nearby-map" data-lat="..." data-lon="..." data-dialog="true" data-zoom="[0...19]">Umgebungskarte</span>
mit einem Event-Handler zum Öffnen einer Umgebungskarte im Vollbildmodus. Zusätzlich wird das dazugehörige Eltern-Tag angezeigt, d.h., eine vorher gesetzte Stilvorlage display: none;
überschrieben.
data-lat
und data-lon
stellen die Koordinate des Kartenzentrums dar, data-zoom
ist der gewünschte Zoom-Wert. Mit data-dialog="true/false"
wird festgelegt, ob die Karte den Kartendialog (Fußzeile, Sidebar) nutzen soll.
Den genannten HTML-Code erzeugt die Vorlage {{Maps}}.
Diese Funktion ersetzt die veraltete Vorlage PoiMap2.
var replaceMaplinks = function()
Diese Funktion ersetzt alle vom Tag <maplink>
erzeugten Links durch einen neuen Event-Handler. Die erzeugten Karten besitzen dann die Wikivoyage-Controls Nearby und Layers.
Bei automatisch nummerierten Markern wird als Titel nicht nur die Markernummer, sondern auch die zugehörige Ortsbezeichnung mit angegeben.
Wenn JavaScript abgeschaltet ist, bleibt das Standardaufrufverhalten der Karten als Fallback erhalten.
var articlesMap = function()
Diese Funktion fügt in bereits bestehende <div>
-Container mit der id wv-articles-map
eine Karte mit allen Artikeln ein:
<div id="wv-articles-map"></div>
Von dieser Funktion machte der Artikel Wikivoyage:Artikelübersicht
Gebrauch. Die Höhe des Containers wird mit CSS-Stilvorlagen festgelegt. Die Höhe lässt sich so an das Ausgabemedium anpassen.
Diese Funktion ersetzt das Serverskript:
[{{Mapserver}}/w/artmap.php?lang=de Weltweit]
var addMagnifyButton = function()
Diese Funktion fügt an jede mit dem Tag <mapframe>
erzeugte Karte einen Vergrößerungs-Schalter hinzu. Die Vergrößerung erfolgt um mindestens eine Zoom-Stufe, falls der Zoom der Karte noch nicht den Wert 19 besitzt. Aus dem Verhältnis zwischen Karten und Bildschirmgröße kann die Zoomstufe auch um zwei oder drei, falls möglich, erhöht werden.
Hilfsfunktionen
[Bearbeiten]var createMap = function( id, center, zoom, caption, options )
Diese Funktion erzeugt eine Karte. Dies können sowohl in den Artikel eingebettete Karten als auch Vollbildkarten sein.
id
ist die id des Karten-Containers.center
ist ein Array mit der Koordinate des Kartenmittelpunkts in der Form[ lat, lon ]
zoom
ist die gewünschte Zoomstufe.caption
ist die Kartenunterschrift.options
ist ein Objekt mit verschiedenen Kartenspezifikationen:
var options = { withClose: true, withControls: true, withData: true, withDialog: false, toggleNearby: false, allowFullScreen: true, isFullScreen: false, featureType: 'mapframe' };
withClose
legt einen Schließen-Schalter an, wenntrue
gesetzt.withControls
legt die Wikivoyage-Schalter Nearby und Layers an, wenntrue
gesetzt.withData
benutzt die Kartendaten aus dem Artikel für die Kartendarstellung, wenntrue
gesetzt.withDialog
benutzt den Kartographer-Dialog mit Sidebar und Fußzeile im Vollbildmodus, wenntrue
gesetzt.toggleNearby
aktiviert den Nearby-Schalter bereits beim Aufbau der Karte, wenntrue
gesetzt. Hierzu ist eine Anpassung des Skripts Mediawiki:Kartographer.js nötig.allowFullScreen
aktiviert den Vollbild-Schalter, wenntrue
gesetzt.isFullScreen
legt fest, ob die Karte im Vollbildmodus angelegt wird, wenntrue
gesetzt.featureType
legt fest, ob die Karte eingebettet (mapframe
) oder als Vollbildkarte über einen Link/Event-Handler (maplink
) erzeugt wird.
Der Kartendarstellung kommt zugute, dass der GeoJSON-Code des Daten-Arrays nicht auf das GeoJSON+simplestyle-Schema geprüft wird. Wenn die Daten dem simplestyle entsprechen, sind die automatisch gültige GeoJSON-Daten. Somit gibt es die Beschränkung auf einstellige Zahlenangaben nicht.
var singleDataset = function( color, symbol, title, lat, lon, description, group )
Die Funktion fügt einen einzelnen Datensatz (ein Kartenfeature) in das GeoJSON-Array ein. Sie wird von der Funktion getData()
aufgerufen.
color
legt die Markerfarbe fest.symbol
legt die Symbolart fest. Dies sind MAKI-Bezeichner, Kleinbuchstaben oder Zahlen.title
legt den Markertitel fest.lat
legt den Breitengrad des Marker-Pins fest.long
legt den Längengrad des Marker-Pins fest.description
enthält eine Beschreibung zum Marker-Pin. Dies ist üblicherweise eine Abbildung.group
legt die Marker-Gruppe fest.
Stilvorlagen
[Bearbeiten]/* Indicator map */ #wv-topMap { height: 400px; border: 1px solid #c8ccd1; margin-bottom: 1em; } #wv-articles-map { height: 600px; border: 1px solid #c8ccd1; } @media (max-width: 1300px) { /* laptop and smartphone support */ #wv-articles-map { height: 450px; } } @media (max-width: 800px) { #wv-articles-map { height: 350px; } } @media (max-width: 600px) { #wv-articles-map { height: 300px; } } #wv-topMap .closeControl, #wv-fullScreenMap .closeControl, #wv-articles-map .closeControl { background-image: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2220%22 height=%2220%22 viewBox=%220 0 20 20%22%3E%3Ctitle%3Eclose%3C/title%3E%3Cpath d=%22M4.34 2.93l12.73 12.73-1.41 1.41L2.93 4.35z%22/%3E%3Cpath d=%22M17.07 4.34L4.34 17.07l-1.41-1.41L15.66 2.93z%22/%3E%3C/svg%3E"); background-position: center center; } /* Minerva skin support*/ .mw-kartographer-container .magnify { /* magnify button of Minerva skin */ float: right; margin-left: 3px; margin-right: 0; display: block !important; } .mw-kartographer-container div.magnify a { background-image: url(/w/resources/src/mediawiki.skinning/images/magnify-clip-ltr.png?4f704); background-image: linear-gradient( transparent,transparent ),url("data:image/svg+xml,%3C%3Fxml version=%221.0%22 encoding=%22UTF-8%22 standalone=%22no%22%3F%3E%0A%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 11 15%22 width=%2215%22 height=%2211%22%3E%0A %3Cg id=%22magnify-clip%22 fill=%22%23fff%22 stroke=%22%23000%22%3E%0A %3Cpath id=%22bigbox%22 d=%22M1.509 1.865h10.99v7.919h-10.99z%22/%3E%0A %3Cpath id=%22smallbox%22 d=%22M-1.499 6.868h5.943v4.904h-5.943z%22/%3E%0A %3C/g%3E%0A%3C/svg%3E%0A"); display: block; text-indent: 15px; white-space: nowrap; overflow: hidden; width: 15px; height: 11px; text-decoration: none; }
Karteneinbindung
[Bearbeiten]Kategorien
[Bearbeiten]- Wartungskategorie: Keine
Eine Übersicht über alle Artikel zur Arbeit an Wikivoyage findest du im Index für den Projektnamensraum Wikivoyage. |