From: Anton Khorev Date: Sat, 7 Dec 2024 16:07:40 +0000 (+0300) Subject: Allow specifying extra layer options in layers.yml X-Git-Tag: live~9^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/02257f7294c45a2cf0d6a94a9dafd8b2e9242e9c?ds=inline;hp=-c Allow specifying extra layer options in layers.yml --- 02257f7294c45a2cf0d6a94a9dafd8b2e9242e9c diff --git a/app/assets/javascripts/leaflet.layers.js b/app/assets/javascripts/leaflet.layers.js index dc692a4a5..35b958c7a 100644 --- a/app/assets/javascripts/leaflet.layers.js +++ b/app/assets/javascripts/leaflet.layers.js @@ -29,7 +29,7 @@ L.OSM.layers = function (options) { map.whenReady(function () { var miniMap = L.map(mapContainer[0], { attributionControl: false, zoomControl: false, keyboard: false }) - .addLayer(new layer.constructor({ apikey: layer.options.apikey })); + .addLayer(new layer.constructor(layer.options)); miniMap.dragging.disable(); miniMap.touchZoom.disable(); diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index 78f43b73a..f478f4351 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -20,17 +20,26 @@ L.OSM.Map = L.Map.extend({ for (const layerDefinition of OSM.LAYER_DEFINITIONS) { if (layerDefinition.apiKeyId && !OSM[layerDefinition.apiKeyId]) continue; - const layerOptions = { - attribution: makeAttribution(layerDefinition.credit), - code: layerDefinition.code, - keyid: layerDefinition.keyId, - name: I18n.t(`javascripts.map.base.${layerDefinition.nameId}`) - }; - if (layerDefinition.apiKeyId) { - layerOptions.apikey = OSM[layerDefinition.apiKeyId]; + 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 === "keyId") { + layerOptions.keyid = value; + } else if (property === "nameId") { + layerOptions.name = I18n.t(`javascripts.map.base.${value}`); + } else if (property === "apiKeyId") { + layerOptions.apikey = OSM[value]; + } else if (property === "leafletOsmId") { + layerConstructor = L.OSM[value]; + } else { + layerOptions[property] = value; + } } - const layer = new L.OSM[layerDefinition.leafletOsmId](layerOptions); + const layer = new layerConstructor(layerOptions); this.baseLayers.push(layer); }