- 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 layers = <%=
+ YAML.load_file(Rails.root.join("config/layers.yml"))
+ .select { |entry| entry["canEmbed"] }
+ .each_with_object({}) do |entry, obj|
+ obj[entry["layerId"]] = {
+ layer: entry["leafletOsmId"],
+ apiKeyId: entry["apiKeyId"]
+ }.compact
+ end.to_json
+ %>;
+ const layerId = (args.layer || "").replaceAll(" ", "");
+ const layerConfig = layers[layerId] || layers.mapnik;
+ const { layer, ...options } = {
+ layer: layerConfig.layer,
+ apikey: apiKeys[layerConfig.apiKeyId],
+ ...tileOptions[layerId]
+ };
+ new L.OSM[layer](options).addTo(map);