+//= require qs/dist/qs
+
L.extend(L.LatLngBounds.prototype, {
getSize: function () {
return (this._northEast.lat - this._southWest.lat) *
var copyright = I18n.t("javascripts.map.copyright", { copyright_url: "/copyright" });
var donate = I18n.t("javascripts.map.donate_link_text", { donate_url: "https://donate.openstreetmap.org" });
var terms = I18n.t("javascripts.map.terms", { terms_url: "https://wiki.osmfoundation.org/wiki/Terms_of_Use" });
+ var cyclosm = I18n.t("javascripts.map.cyclosm", { cyclosm_url: "https://www.cyclosm.org", osmfrance_url: "https://openstreetmap.fr/" });
+ var thunderforest = I18n.t("javascripts.map.thunderforest", { thunderforest_url: "https://www.thunderforest.com/" });
+ var memomaps = I18n.t("javascripts.map.opnvkarte", { memomaps_url: "https://memomaps.de/" });
+ var hotosm = I18n.t("javascripts.map.hotosm", { hotosm_url: "https://www.hotosm.org/", osmfrance_url: "https://openstreetmap.fr/" });
this.baseLayers = [];
name: I18n.t("javascripts.map.base.standard")
}));
+ this.baseLayers.push(new L.OSM.CyclOSM({
+ attribution: copyright + ". " + cyclosm + ". " + terms,
+ code: "Y",
+ keyid: "cyclosm",
+ name: I18n.t("javascripts.map.base.cyclosm")
+ }));
+
if (OSM.THUNDERFOREST_KEY) {
this.baseLayers.push(new L.OSM.CycleMap({
- attribution: copyright + ". Tiles courtesy of <a href='https://www.thunderforest.com/' target='_blank'>Andy Allan</a>. " + terms,
+ attribution: copyright + ". " + thunderforest + ". " + terms,
apikey: OSM.THUNDERFOREST_KEY,
code: "C",
keyid: "cyclemap",
}));
this.baseLayers.push(new L.OSM.TransportMap({
- attribution: copyright + ". Tiles courtesy of <a href='https://www.thunderforest.com/' target='_blank'>Andy Allan</a>. " + terms,
+ attribution: copyright + ". " + thunderforest + ". " + terms,
apikey: OSM.THUNDERFOREST_KEY,
code: "T",
keyid: "transportmap",
}));
}
+ this.baseLayers.push(new L.OSM.OPNVKarte({
+ attribution: copyright + ". " + memomaps + ". " + terms,
+ code: "O",
+ keyid: "opnvkarte",
+ name: I18n.t("javascripts.map.base.opnvkarte")
+ }));
+
this.baseLayers.push(new L.OSM.HOT({
- attribution: copyright + ". Tiles style by <a href='https://www.hotosm.org/' target='_blank'>Humanitarian OpenStreetMap Team</a> hosted by <a href='https://openstreetmap.fr/' target='_blank'>OpenStreetMap France</a>. " + terms,
+ attribution: copyright + ". " + hotosm + ". " + terms,
code: "H",
keyid: "hot",
name: I18n.t("javascripts.map.base.hot")
},
updateLayers: function (layerParam) {
- layerParam = layerParam || "M";
- var layersAdded = "";
+ var layers = layerParam || "M",
+ layersAdded = "";
for (var i = this.baseLayers.length - 1; i >= 0; i--) {
- if (layerParam.indexOf(this.baseLayers[i].options.code) >= 0) {
+ if (layers.indexOf(this.baseLayers[i].options.code) >= 0) {
this.addLayer(this.baseLayers[i]);
layersAdded = layersAdded + this.baseLayers[i].options.code;
} else if (i === 0 && layersAdded === "") {
}
var url = window.location.protocol + "//" + OSM.SERVER_URL + "/",
- query = querystring.stringify(params),
+ query = Qs.stringify(params),
hash = OSM.formatHash(this);
if (query) url += "?" + query;
// Called to interlace the bits in x and y, making a Morton code.
function interlace(x, y) {
- x = (x | (x << 8)) & 0x00ff00ff;
- x = (x | (x << 4)) & 0x0f0f0f0f;
- x = (x | (x << 2)) & 0x33333333;
- x = (x | (x << 1)) & 0x55555555;
- y = (y | (y << 8)) & 0x00ff00ff;
- y = (y | (y << 4)) & 0x0f0f0f0f;
- y = (y | (y << 2)) & 0x33333333;
- y = (y | (y << 1)) & 0x55555555;
- return (x << 1) | y;
+ var interlaced_x = x,
+ interlaced_y = y;
+ interlaced_x = (interlaced_x | (interlaced_x << 8)) & 0x00ff00ff;
+ interlaced_x = (interlaced_x | (interlaced_x << 4)) & 0x0f0f0f0f;
+ interlaced_x = (interlaced_x | (interlaced_x << 2)) & 0x33333333;
+ interlaced_x = (interlaced_x | (interlaced_x << 1)) & 0x55555555;
+ interlaced_y = (interlaced_y | (interlaced_y << 8)) & 0x00ff00ff;
+ interlaced_y = (interlaced_y | (interlaced_y << 4)) & 0x0f0f0f0f;
+ interlaced_y = (interlaced_y | (interlaced_y << 2)) & 0x33333333;
+ interlaced_y = (interlaced_y | (interlaced_y << 1)) & 0x55555555;
+ return (interlaced_x << 1) | interlaced_y;
}
var params = {};
params[this._object.type] = this._object.id;
}
- var query = querystring.stringify(params);
+ var query = Qs.stringify(params);
if (query) {
str += "?" + query;
}