Move map layer ids/codes/keys to layer definition data
This commit is contained in:
parent
5410fb6cc6
commit
703990a5bb
1 changed files with 102 additions and 87 deletions
|
@ -15,109 +15,125 @@ 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
|
||||
const layerDefinitions = [
|
||||
{
|
||||
leafletOsmId: "Mapnik",
|
||||
code: "M",
|
||||
keyId: "mapnik",
|
||||
nameId: "standard",
|
||||
credit: {
|
||||
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/"
|
||||
{
|
||||
leafletOsmId: "CyclOSM",
|
||||
code: "Y",
|
||||
keyId: "cyclosm",
|
||||
nameId: "cyclosm",
|
||||
credit: {
|
||||
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/"
|
||||
{
|
||||
leafletOsmId: "CycleMap",
|
||||
code: "C",
|
||||
keyId: "cyclemap",
|
||||
nameId: "cycle_map",
|
||||
apiKeyId: "THUNDERFOREST_KEY",
|
||||
credit: {
|
||||
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/"
|
||||
{
|
||||
leafletOsmId: "TransportMap",
|
||||
code: "T",
|
||||
keyId: "transportmap",
|
||||
nameId: "transport_map",
|
||||
apiKeyId: "THUNDERFOREST_KEY",
|
||||
credit: {
|
||||
id: "thunderforest_credit",
|
||||
children: {
|
||||
thunderforest_link: {
|
||||
id: "andy_allan",
|
||||
href: "https://www.thunderforest.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/"
|
||||
{
|
||||
leafletOsmId: "TracestrackTopo",
|
||||
code: "P",
|
||||
keyId: "tracestracktopo",
|
||||
nameId: "tracestracktop_topo",
|
||||
apiKeyId: "TRACESTRACK_KEY",
|
||||
credit: {
|
||||
id: "tracestrack_credit",
|
||||
children: {
|
||||
tracestrack_link: {
|
||||
id: "tracestrack",
|
||||
href: "https://www.tracestrack.com/"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
leafletOsmId: "HOT",
|
||||
code: "H",
|
||||
keyId: "hot",
|
||||
nameId: "hot",
|
||||
credit: {
|
||||
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")
|
||||
}));
|
||||
for (const layerDefinition of layerDefinitions) {
|
||||
if (layerDefinition.apiKeyId && !OSM[layerDefinition.apiKeyId]) continue;
|
||||
|
||||
this.baseLayers.push(new L.OSM.CyclOSM({
|
||||
attribution: makeAttribution("cyclosm"),
|
||||
code: "Y",
|
||||
keyid: "cyclosm",
|
||||
name: I18n.t("javascripts.map.base.cyclosm")
|
||||
}));
|
||||
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];
|
||||
}
|
||||
|
||||
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")
|
||||
}));
|
||||
const layer = new L.OSM[layerDefinition.leafletOsmId](layerOptions);
|
||||
this.baseLayers.push(layer);
|
||||
}
|
||||
|
||||
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")
|
||||
}));
|
||||
}
|
||||
|
||||
this.baseLayers.push(new L.OSM.HOT({
|
||||
attribution: makeAttribution("hotosm"),
|
||||
code: "H",
|
||||
keyid: "hot",
|
||||
name: I18n.t("javascripts.map.base.hot")
|
||||
}));
|
||||
|
||||
this.noteLayer = new L.FeatureGroup();
|
||||
this.noteLayer.options = { code: "N" };
|
||||
|
||||
|
@ -135,8 +151,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 +161,8 @@ L.OSM.Map = L.Map.extend({
|
|||
}).prop("outerHTML")
|
||||
});
|
||||
|
||||
attribution += layerCredit.donate ? " ♥ " : ". ";
|
||||
attribution += makeCredit(layerCredit);
|
||||
attribution += credit.donate ? " ♥ " : ". ";
|
||||
attribution += makeCredit(credit);
|
||||
attribution += ". ";
|
||||
|
||||
attribution += $("<a>", {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue