]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/application.js
Use leaflet-hash
[rails.git] / app / assets / javascripts / application.js
index 84305a9618af358d6c69b06f9bd942637ff8c3ff..44858506bf3dea3d2c3d7dd112b2c86af6550bfb 100644 (file)
@@ -5,6 +5,8 @@
 //= require augment
 //= require leaflet
 //= require leaflet.osm
+//= require leaflet.hash
+//= require leaflet.zoom
 //= require leaflet.extend
 //= require leaflet.locationfilter
 //= require i18n/translations
@@ -15,7 +17,6 @@
 //= require menu
 //= require sidebar
 //= require richtext
-//= require resize
 //= require geocoder
 //= require querystring
 
@@ -99,16 +100,21 @@ function updatelinks(loc, zoom, layers, bounds, object) {
 
     var minzoom = $(link).data("minzoom");
     if (minzoom) {
-        var name = link.id.replace(/anchor$/, "");
-        $(link).off("click.minzoom");
-        if (zoom >= minzoom) {
-          $(link).attr("title", I18n.t("javascripts.site." + name + "_tooltip"))
-              .removeClass("disabled");
-        } else {
-          $(link).on("click.minzoom", minZoomAlert)
-              .attr("title", I18n.t("javascripts.site." + name + "_disabled_tooltip"))
-              .addClass("disabled");
-        }
+      var name = link.id.replace(/anchor$/, "");
+      $(link).off("click.minzoom");
+      if (zoom >= minzoom) {
+        $(link)
+          .attr("title", I18n.t("javascripts.site." + name + "_tooltip"))
+          .removeClass("disabled");
+      } else {
+        $(link)
+          .attr("title", I18n.t("javascripts.site." + name + "_disabled_tooltip"))
+          .addClass("disabled")
+          .on("click.minzoom", function () {
+            alert(I18n.t("javascripts.site." + name + "_zoom_alert"));
+            return false;
+          });
+      }
     }
     link.href = base + '?' + querystring.stringify(args);
   }
@@ -116,26 +122,25 @@ function updatelinks(loc, zoom, layers, bounds, object) {
 
 function getShortUrl(map) {
   return (window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
-          'http://osm.org/go/' : '/go/') +
+          'http://osm.org/go/' : 'http://' + window.location.hostname + '/go/') +
           makeShortCode(map);
 }
 
 function getUrl(map) {
   var center = map.getCenter(),
-      zoom = map.getZoom();
+      zoom = map.getZoom(),
+      toZoom = zoomPrecision(zoom);
+
   return (window.location.hostname.match(/^www\.openstreetmap\.org/i) ?
-          'http://openstreetmap.org/?' : '/?') +
+          'http://openstreetmap.org/?' : 'http://' + window.location.hostname + '/?') +
         querystring.stringify({
-            lat: center.lat,
-            lon: center.lng,
-            zoom: zoom
+            lat: toZoom(center.lat),
+            lon: toZoom(center.lng),
+            zoom: zoom,
+            layers: map.getLayersCode()
         });
 }
 
-function minZoomAlert() {
-    alert(I18n.t("javascripts.site." + name + "_zoom_alert")); return false;
-}
-
 // Called to create a short code for the short link.
 function makeShortCode(map) {
     var zoom = map.getZoom(),
@@ -174,6 +179,12 @@ function makeShortCode(map) {
     return str;
 }
 
+// generate a cookie-safe string of map state
+function cookieContent(map) {
+  var center = map.getCenter().wrap();
+  return [center.lng, center.lat, map.getZoom(), map.getLayersCode()].join('|');
+}
+
 /*
  * Forms which have been cached by rails may have the wrong
  * authenticity token, so patch up any forms with the correct