]> git.openstreetmap.org Git - rails.git/commitdiff
Refactor map base layer initialization
authorMarwin Hochfelsner <50826859+hlfan@users.noreply.github.com>
Fri, 21 Mar 2025 06:20:03 +0000 (07:20 +0100)
committerMarwin Hochfelsner <50826859+hlfan@users.noreply.github.com>
Wed, 9 Apr 2025 18:16:28 +0000 (20:16 +0200)
app/assets/javascripts/leaflet.map.js

index 2ea3352ab93b59e897ca63f04fcd384dd7b392ae..2488a9db5aa443d3505273f752b21c44daf3c85c 100644 (file)
@@ -13,32 +13,22 @@ L.OSM.Map = L.Map.extend({
   initialize: function (id, options) {
     L.Map.prototype.initialize.call(this, id, options);
 
-    this.baseLayers = [];
-
-    for (const layerDefinition of OSM.LAYER_DEFINITIONS) {
-      let layerConstructor = L.OSM.TileLayer;
-      const layerOptions = {};
-
-      for (const [property, value] of Object.entries(layerDefinition)) {
-        if (property === "credit") {
-          layerOptions.attribution = makeAttribution(value);
-        } else if (property === "nameId") {
-          layerOptions.name = OSM.i18n.t(`javascripts.map.base.${value}`);
-        } else if (property === "leafletOsmId") {
-          layerConstructor = L.OSM[value];
-        } else if (property === "leafletOsmDarkId" && OSM.isDarkMap() && L.OSM[value]) {
-          layerConstructor = L.OSM[value];
-        } else {
-          layerOptions[property] = value;
-        }
-      }
+    this.baseLayers = OSM.LAYER_DEFINITIONS.map((
+      { credit, nameId, leafletOsmId, leafletOsmDarkId, ...layerOptions }
+    ) => {
+      if (credit) layerOptions.attribution = makeAttribution(credit);
+      if (nameId) layerOptions.name = OSM.i18n.t(`javascripts.map.base.${nameId}`);
+      const layerConstructor =
+        (OSM.isDarkMap() && L.OSM[leafletOsmDarkId]) ||
+        L.OSM[leafletOsmId] ||
+        L.OSM.TileLayer;
 
       const layer = new layerConstructor(layerOptions);
       layer.on("add", () => {
         this.fire("baselayerchange", { layer: layer });
       });
-      this.baseLayers.push(layer);
-    }
+      return layer;
+    });
 
     this.noteLayer = new L.FeatureGroup();
     this.noteLayer.options = { code: "N" };