]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/leaflet.map.js
Pan map when showing/hiding sidebars depending on ltr/rtl
[rails.git] / app / assets / javascripts / leaflet.map.js
index 797a57e20db99e35c6f46e2f5b67739646dec0f2..105b03ed694adfc238b02ea9b17d9a992759a87c 100644 (file)
@@ -1,4 +1,4 @@
-//= require querystring
+//= require qs/dist/qs
 
 L.extend(L.LatLngBounds.prototype, {
   getSize: function () {
@@ -18,6 +18,10 @@ L.OSM.Map = L.Map.extend({
     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 = [];
 
@@ -28,9 +32,16 @@ L.OSM.Map = L.Map.extend({
       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",
@@ -38,7 +49,7 @@ L.OSM.Map = L.Map.extend({
       }));
 
       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",
@@ -46,8 +57,15 @@ L.OSM.Map = L.Map.extend({
       }));
     }
 
+    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")
@@ -116,9 +134,8 @@ L.OSM.Map = L.Map.extend({
       params.mlon = latLng.lng.toFixed(precision);
     }
 
-    var querystring = require("querystring-component"),
-        url = window.location.protocol + "//" + OSM.SERVER_URL + "/",
-        query = querystring.stringify(params),
+    var url = window.location.protocol + "//" + OSM.SERVER_URL + "/",
+        query = Qs.stringify(params),
         hash = OSM.formatHash(this);
 
     if (query) url += "?" + query;
@@ -183,8 +200,7 @@ L.OSM.Map = L.Map.extend({
       params[this._object.type] = this._object.id;
     }
 
-    var querystring = require("querystring-component"),
-        query = querystring.stringify(params);
+    var query = Qs.stringify(params);
     if (query) {
       str += "?" + query;
     }
@@ -284,12 +300,17 @@ L.OSM.Map = L.Map.extend({
   },
 
   setSidebarOverlaid: function (overlaid) {
+    var sidebarWidth = 350;
     if (overlaid && !$("#content").hasClass("overlay-sidebar")) {
       $("#content").addClass("overlay-sidebar");
-      this.invalidateSize({ pan: false })
-        .panBy([-350, 0], { animate: false });
+      this.invalidateSize({ pan: false });
+      if ($("html").attr("dir") !== "rtl") {
+        this.panBy([-sidebarWidth, 0], { animate: false });
+      }
     } else if (!overlaid && $("#content").hasClass("overlay-sidebar")) {
-      this.panBy([350, 0], { animate: false });
+      if ($("html").attr("dir") !== "rtl") {
+        this.panBy([sidebarWidth, 0], { animate: false });
+      }
       $("#content").removeClass("overlay-sidebar");
       this.invalidateSize({ pan: false });
     }