MediaWiki:Kartographer.js: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
/* | /* This JavaScript is loaded on all pages containing maps */ | ||
(function (mw) { | (function (mw) { | ||
// Define overlay and base layers separately | |||
const tileLayers = { | |||
" | overlays: { | ||
openseamap: { | |||
name: "Open Sea Map", | |||
layer: L.tileLayer("https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png", { | |||
wvIsExternal: true, | |||
wvIsOverlay: true, | |||
defaultActive: true, | |||
attribs: [ | |||
{ | |||
url: "https://www.openstreetmap.org/copyright", | |||
name: "OpenStreetMap", | |||
label: "Map data" | |||
}, | |||
{ | |||
url: "https://www.openseamap.org/", | |||
name: "Open Sea Map", | |||
label: "Map style" | |||
} | |||
] | |||
}) | |||
}, | |||
contours: { | |||
name: "Contours", | |||
layer: L.vectorGrid.protobuf("https://tiles.scuba-spot.info/contours/{z}/{x}/{y}", { | |||
vectorTileLayerStyles: { | |||
merged: { | |||
weight: 1, | |||
color: '#333' | |||
} | |||
}, | }, | ||
interactive: true | |||
}) | |||
} | } | ||
} | }, | ||
baseLayers: { | |||
" | // Example for future use: | ||
// mapnik: { | |||
// name: "Mapnik", | |||
// layer: L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { subdomains: ["a", "b", "c"] }) | |||
// } | |||
} | |||
} | |||
} | |||
}; | }; | ||
function addCustomLayers(map) { | function addCustomLayers(map) { | ||
const base = {}; | |||
const overlays = {}; | |||
for (const key in tileLayers.baseLayers) { | |||
const entry = tileLayers.baseLayers[key]; | |||
base[entry.name] = entry.layer; | |||
} | |||
for (const key in tileLayers.overlays) { | |||
const entry = tileLayers.overlays[key]; | |||
overlays[entry.name] = entry.layer; | |||
} | |||
for ( | L.control.layers(base, overlays).addTo(map); | ||
// Activate default overlays | |||
if ( | for (const key in tileLayers.overlays) { | ||
const entry = tileLayers.overlays[key]; | |||
if (entry.layer && entry.layer.options.defaultActive) { | |||
entry.layer.addTo(map); | |||
} | } | ||
} | } | ||
} | } | ||
// Hook into Kartographer's map initialization | // Hook into Kartographer's map initialization | ||
mw.hook('wikipage.maps').add(function (maps) { | mw.hook('wikipage.maps').add(function (maps) { | ||
maps.forEach( | maps.forEach(addCustomLayers); | ||
}); | }); | ||
})(mediaWiki); | })(mediaWiki); | ||