X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/00270dd86ee4116a931074c1145663ca74fe405a..9f341430493cdaafb6ea9ce6ac29fc6af291d57c:/app/assets/javascripts/leaflet.map.js diff --git a/app/assets/javascripts/leaflet.map.js b/app/assets/javascripts/leaflet.map.js index fe4b139d1..78f43b73a 100644 --- a/app/assets/javascripts/leaflet.map.js +++ b/app/assets/javascripts/leaflet.map.js @@ -15,108 +15,24 @@ L.OSM.Map = L.Map.extend({ initialize: function (id, options) { L.Map.prototype.initialize.call(this, id, options); - const layerCredits = { - mapnik: { - id: "make_a_donation", - href: "https://supporting.openstreetmap.org", - donate: true - }, - cyclosm: { - id: "cyclosm_credit", - children: { - cyclosm_link: { - id: "cyclosm_name", - href: "https://www.cyclosm.org" - }, - osm_france_link: { - id: "osm_france", - href: "https://openstreetmap.fr/" - } - } - }, - thunderforest: { - id: "thunderforest_credit", - children: { - thunderforest_link: { - id: "andy_allan", - href: "https://www.thunderforest.com/" - } - } - }, - tracestrack: { - id: "tracestrack_credit", - children: { - tracestrack_link: { - id: "tracestrack", - href: "https://www.tracestrack.com/" - } - } - }, - hotosm: { - id: "hotosm_credit", - children: { - hotosm_link: { - id: "hotosm_name", - href: "https://www.hotosm.org/" - }, - osm_france_link: { - id: "osm_france", - href: "https://openstreetmap.fr/" - } - } - } - }; - this.baseLayers = []; - this.baseLayers.push(new L.OSM.Mapnik({ - attribution: makeAttribution("mapnik"), - code: "M", - keyid: "mapnik", - name: I18n.t("javascripts.map.base.standard") - })); - - this.baseLayers.push(new L.OSM.CyclOSM({ - attribution: makeAttribution("cyclosm"), - code: "Y", - keyid: "cyclosm", - name: I18n.t("javascripts.map.base.cyclosm") - })); - - if (OSM.THUNDERFOREST_KEY) { - this.baseLayers.push(new L.OSM.CycleMap({ - attribution: makeAttribution("thunderforest"), - apikey: OSM.THUNDERFOREST_KEY, - code: "C", - keyid: "cyclemap", - name: I18n.t("javascripts.map.base.cycle_map") - })); - - this.baseLayers.push(new L.OSM.TransportMap({ - attribution: makeAttribution("thunderforest"), - apikey: OSM.THUNDERFOREST_KEY, - code: "T", - keyid: "transportmap", - name: I18n.t("javascripts.map.base.transport_map") - })); - } + for (const layerDefinition of OSM.LAYER_DEFINITIONS) { + if (layerDefinition.apiKeyId && !OSM[layerDefinition.apiKeyId]) continue; - if (OSM.TRACESTRACK_KEY) { - this.baseLayers.push(new L.OSM.TracestrackTopo({ - attribution: makeAttribution("tracestrack"), - apikey: OSM.TRACESTRACK_KEY, - code: "P", - keyid: "tracestracktopo", - name: I18n.t("javascripts.map.base.tracestracktop_topo") - })); - } + 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]; + } - this.baseLayers.push(new L.OSM.HOT({ - attribution: makeAttribution("hotosm"), - code: "H", - keyid: "hot", - name: I18n.t("javascripts.map.base.hot") - })); + const layer = new L.OSM[layerDefinition.leafletOsmId](layerOptions); + this.baseLayers.push(layer); + } this.noteLayer = new L.FeatureGroup(); this.noteLayer.options = { code: "N" }; @@ -135,8 +51,7 @@ L.OSM.Map = L.Map.extend({ } }); - function makeAttribution(id) { - const layerCredit = layerCredits[id]; + function makeAttribution(credit) { let attribution = ""; attribution += I18n.t("javascripts.map.copyright_text", { @@ -146,8 +61,8 @@ L.OSM.Map = L.Map.extend({ }).prop("outerHTML") }); - attribution += layerCredit.donate ? " ♥ " : ". "; - attribution += makeCredit(layerCredit); + attribution += credit.donate ? " ♥ " : ". "; + attribution += makeCredit(credit); attribution += ". "; attribution += $("", {