- if (!args.layer || args.layer === "mapnik" || args.layer === "osmarender" || args.layer === "mapquest") {
- new L.OSM.Mapnik(mapnikOptions).addTo(map);
- } else if (args.layer === "cyclosm") {
- new L.OSM.CyclOSM().addTo(map);
- } else if (args.layer === "cyclemap" || args.layer === "cycle map") {
- new L.OSM.CycleMap(thunderforestOptions).addTo(map);
- } else if (args.layer === "transportmap") {
- new L.OSM.TransportMap(thunderforestOptions).addTo(map);
- } else if (args.layer === "opnvkarte") {
- new L.OSM.OPNVKarte().addTo(map);
- } else if (args.layer === "hot") {
- new L.OSM.HOT().addTo(map);
- }
+ const isDarkTheme = args.theme === "dark" || (args.theme !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
+ const layers = <%= MapLayers::embed_definitions("config/layers.yml").to_json %>;
+ const layerId = (args.layer || "").replaceAll(" ", "");
+ const layerConfig = layers[layerId] || layers.mapnik;
+ const layer = (isDarkTheme && layerConfig.leafletOsmDarkId) || layerConfig.leafletOsmId;
+ new L.OSM[layer]({ apikey: layerConfig.apikey, ...options[layerId] }).addTo(map);