From f97aee7fa2ee2e3acebe0f984f57b98aecf3ff45 Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Wed, 29 Jan 2025 13:35:01 +0300 Subject: [PATCH 1/3] Don't remove-readd standard layer when layerParam is not empty in map.updateLayers --- app/assets/javascripts/leaflet.map.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index 1e9174efa6e..2bf097cea0c 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -116,20 +116,19 @@ L.OSM.Map = L.Map.extend({ }, updateLayers: function (layerParam) { - var layers = layerParam || "O", - layersAdded = ""; - - for (let i = this.baseLayers.length - 1; i >= 0; i--) { - if (layers.indexOf(this.baseLayers[i].options.code) >= 0) { - this.addLayer(this.baseLayers[i]); - layersAdded = layersAdded + this.baseLayers[i].options.code; - } else if (i === 0 && layersAdded === "") { - this.addLayer(this.baseLayers[i]); - } else { - this.removeLayer(this.baseLayers[i]); + const oldBaseLayer = this.getMapBaseLayer(); + let newBaseLayer; + + for (const layer of this.baseLayers) { + if (!newBaseLayer || layerParam.includes(layer.options.code)) { + newBaseLayer = layer; } } + if (newBaseLayer !== oldBaseLayer) { + if (oldBaseLayer) this.removeLayer(oldBaseLayer); + if (newBaseLayer) this.addLayer(newBaseLayer); + } }, getLayersCode: function () { From b21c9d132600ae71ecc8edb4cd1b6e873302435e Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Tue, 10 Dec 2024 00:31:59 +0300 Subject: [PATCH 2/3] Add map.getMapBaseLayer() --- app/assets/javascripts/leaflet.map.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index 2bf097cea0c..e2bfd64a5a3 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -142,11 +142,8 @@ L.OSM.Map = L.Map.extend({ }, getMapBaseLayerId: function () { - var baseLayerId; - this.eachLayer(function (layer) { - if (layer.options && layer.options.keyid) baseLayerId = layer.options.keyid; - }); - return baseLayerId; + const layer = this.getMapBaseLayer(); + if (layer) return layer.options.layerId; }, getMapBaseLayer: function () { From 8faa35915ef4570a0c857a63700bbdb7aaca9295 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Sat, 18 Jul 2026 12:11:54 -0700 Subject: [PATCH 3/3] Fixed slippy map tests These tests assume the default layer is Standard (M), not a vector style like Historical. --- test/javascripts/osm_test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/javascripts/osm_test.js b/test/javascripts/osm_test.js index c5be6b5f6a5..b6f1adedc0f 100644 --- a/test/javascripts/osm_test.js +++ b/test/javascripts/osm_test.js @@ -339,7 +339,7 @@ describe("OSM", function () { it("creates a location cookie value", function () { $("body").append("
"); const map = new L.OSM.Map("map", { center: [57.6247, -3.6845], zoom: 9 }); - map.updateLayers(""); + map.updateLayers("M"); expect(OSM.locationCookie(map)).to.eq("-3.685|57.625|9|M"); $("#map").remove(); }); @@ -347,7 +347,7 @@ describe("OSM", function () { it("respects zoomPrecision", function () { $("body").append("
"); const map = new L.OSM.Map("map", { center: [57.6247, -3.6845], zoom: 9 }); - map.updateLayers(""); + map.updateLayers("M"); expect(OSM.locationCookie(map)).to.eq("-3.685|57.625|9|M"); // map.setZoom() doesn't update the zoom level for some reason // using map._zoom here to update the zoom level manually