Zum Inhalt springen

MediaWiki:Kartographer.js

Aus Scuba-Spot.info

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/* This JavaScript is loaded on all pages containing maps */

(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) {
        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;
        }

        L.control.layers(base, overlays).addTo(map);

        // Activate default overlays
        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
    mw.hook('wikipage.maps').add(function (maps) {
        maps.forEach(addCustomLayers);
    });
})(mediaWiki);