Zum Inhalt springen

MediaWiki:Kartographer.js: Unterschied zwischen den Versionen

Aus Scuba-Spot.info
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
/* Jedes JavaScript an dieser Stelle wird für alle Benutzer auf Seiten geladen, die Karten enthalten */
/* This JavaScript is loaded on all pages containing maps */


(function (mw) {
(function (mw) {
     var maptiles = {/*
     // Define overlay and base layers separately
         "mapnik": {
    const tileLayers = {
             "tilesUrl": "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
         overlays: {
            "options": {
             openseamap: {
                "wvIsExternal": true,
                name: "Open Sea Map",
                "wvName": "Mapnik",
                layer: L.tileLayer("https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png", {
                "subdomains": ["a", "b", "c"],
                    wvIsExternal: true,
                "attribs": [
                    wvIsOverlay: true,
                    {
                    defaultActive: true,
                        "url": "https://www.openstreetmap.org/copyright",
                    attribs: [
                        "name": "OpenStreetMap",
                        {
                        "label": "Map data"
                            url: "https://www.openstreetmap.org/copyright",
                    }
                            name: "OpenStreetMap",
                ]
                            label: "Map data"
            }
                        },
        },*/
                        {
        "openseamap": {
                            url: "https://www.openseamap.org/",
            "tilesUrl": "https://tiles.openseamap.org/seamark/{z}/{x}/{y}.png",
                            name: "Open Sea Map",
            "options": {
                            label: "Map style"
                "wvIsExternal": true,
                        }
                "wvIsOverlay": true,
                    ]
                "wvName": "Open Sea Map",
                 })
                 "defaultActive": true,
            },
                "attribs": [
            contours: {
                    {
                name: "Contours",
                        "url": "https://www.openstreetmap.org/copyright",
                layer: L.vectorGrid.protobuf("https://tiles.scuba-spot.info/contours/{z}/{x}/{y}", {
                         "name": "OpenStreetMap",
                    vectorTileLayerStyles: {
                         "label": "Map data"
                         merged: {
                            weight: 1,
                            color: '#333'
                         }
                     },
                     },
                     {
                     interactive: true
                        "url": "https://www.openseamap.org/",
                })
                        "name": "Open Sea Map",
                        "label": "Map style"
                    }
                ]
             }
             }
         }/*,
         },
         "contours": {
         baseLayers: {
             "tilesUrl": "https://tiles.scuba-spot.info/contours/{z}/{x}/{y}",
            // Example for future use:
            "options": {
            // mapnik: {
                "wvIsExternal": true,
             //    name: "Mapnik",
                "wvIsOverlay": true,
            //    layer: L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", { subdomains: ["a", "b", "c"] })
                "wvName": "Contours",
             // }
                "defaultActive": false,
         }
                "attribs": [
                    {
                        "url": "https://www.swisstopo.admin.ch/de/hoehenmodell-swissbathy3d",
                        "name": "swissBathy3D",
                        "label": "©swisstopo"
                    }
                ]
             }
         }*/
        // Add more layers as needed
     };
     };


    // Function to add layers to the map
     function addCustomLayers(map) {
     function addCustomLayers(map) {
         var baseLayers = {};
         const base = {};
         var overlayLayers = {};
         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 (var key in maptiles) {
        L.control.layers(base, overlays).addTo(map);
             var tile = maptiles[key];
 
            var layer = L.tileLayer(tile.tilesUrl, tile.options);
        // Activate default overlays
             if (tile.options.wvIsOverlay) {
         for (const key in tileLayers.overlays) {
                overlayLayers[tile.options.wvName] = layer;
             const entry = tileLayers.overlays[key];
                //if (tile.options.defaultActive) {
             if (entry.layer && entry.layer.options.defaultActive) {
                 //    layer.addTo(map);
                 entry.layer.addTo(map);
                //}
            } else {
                baseLayers[tile.options.wvName] = layer;
             }
             }
         }
         }
        overlayLayers["Contours"] = L.vectorGrid.protobuf('https://tiles.scuba-spot.info/contours/{z}/{x}/{y}', {
  vectorTileLayerStyles: {
    merged: {
      weight: 1,
      color: '#333',
    }
  },
  interactive: true,
});
        L.control.layers(baseLayers, overlayLayers).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(function (map) {
         maps.forEach(addCustomLayers);
            addCustomLayers(map);
        });
     });
     });
})(mediaWiki);
})(mediaWiki);

Version vom 10. Juni 2025, 20:34 Uhr

/* 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);