Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/pull/5349'
Browse files Browse the repository at this point in the history
  • Loading branch information
tomhughes committed Nov 22, 2024
2 parents 257f467 + 126a987 commit 2882a65
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 102 deletions.
119 changes: 17 additions & 102 deletions app/assets/javascripts/leaflet.map.js
Original file line number Diff line number Diff line change
Expand Up @@ -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" };
Expand All @@ -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", {
Expand All @@ -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 += $("<a>", {
Expand Down
2 changes: 2 additions & 0 deletions app/assets/javascripts/osm.js.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//= depend_on settings.yml
//= depend_on settings.local.yml
//= depend_on layers.yml
//= depend_on key.yml
//= require qs/dist/qs

Expand Down Expand Up @@ -30,6 +31,7 @@ OSM = {
TRACESTRACK_KEY: <%= Settings.tracestrack_key.to_json %>,
<% end %>

LAYER_DEFINITIONS: <%= YAML.load_file(Rails.root.join("config/layers.yml")).to_json %>,
LAYERS_WITH_MAP_KEY: <%= YAML.load_file(Rails.root.join("config/key.yml")).keys.to_json %>,

MARKER_GREEN: <%= image_path("marker-green.png").to_json %>,
Expand Down
72 changes: 72 additions & 0 deletions config/layers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
- leafletOsmId: "Mapnik"
code: "M"
keyId: "mapnik"
nameId: "standard"
credit:
id: "make_a_donation"
href: "https://supporting.openstreetmap.org"
donate: true

- 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/"

- 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/"

- 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/"

- 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/"

0 comments on commit 2882a65

Please sign in to comment.