Allow specifying extra layer options in layers.yml

This commit is contained in:
Anton Khorev 2024-12-07 19:07:40 +03:00
parent fe81ac334c
commit 02257f7294
2 changed files with 19 additions and 10 deletions

View file

@ -29,7 +29,7 @@ L.OSM.layers = function (options) {
map.whenReady(function () { map.whenReady(function () {
var miniMap = L.map(mapContainer[0], { attributionControl: false, zoomControl: false, keyboard: false }) 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.dragging.disable();
miniMap.touchZoom.disable(); miniMap.touchZoom.disable();

View file

@ -20,17 +20,26 @@ L.OSM.Map = L.Map.extend({
for (const layerDefinition of OSM.LAYER_DEFINITIONS) { for (const layerDefinition of OSM.LAYER_DEFINITIONS) {
if (layerDefinition.apiKeyId && !OSM[layerDefinition.apiKeyId]) continue; if (layerDefinition.apiKeyId && !OSM[layerDefinition.apiKeyId]) continue;
const layerOptions = { let layerConstructor = L.OSM.TileLayer;
attribution: makeAttribution(layerDefinition.credit), const layerOptions = {};
code: layerDefinition.code,
keyid: layerDefinition.keyId, for (const [property, value] of Object.entries(layerDefinition)) {
name: I18n.t(`javascripts.map.base.${layerDefinition.nameId}`) if (property === "credit") {
}; layerOptions.attribution = makeAttribution(value);
if (layerDefinition.apiKeyId) { } else if (property === "keyId") {
layerOptions.apikey = OSM[layerDefinition.apiKeyId]; 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); this.baseLayers.push(layer);
} }