]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/site/id.html.erb
Refactor search JS
[rails.git] / app / views / site / id.html.erb
index 8565cb9ea9f84c87fe0bea5f359940443cc3daa5..ccdad95572954100104e5526a5435c68a5154e2b 100644 (file)
@@ -16,7 +16,7 @@
       'Please upgrade your browser or use Potlatch 2 to edit the map.';
     document.getElementById('id-container').className = 'unsupported';
   } else {
-    <% locale = request.compatible_language_from(ID::LOCALES) || "en" %>
+    <% locale = select_locale(ID::LOCALES).to_s %>
 
     var id = iD()
       .embed(true)
         oauth_token_secret: "<%= token.secret %>"
       });
 
-    id.map().on('move.embed', function() {
+    id.map().on('move.embed', parent.$.throttle(250, function() {
       var extent = id.map().extent(),
           zoom = ~~id.map().zoom(),
           center = id.map().center();
 
-      parent.updatelinks(
-        center[0],
-        center[1],
+      parent.updatelinks({
+          lon: center[0],
+          lat: center[1]
+        },
         zoom,
         null,
-        extent[0][0],
-        extent[0][1],
-        extent[1][0],
-        extent[1][1]);
-    });
+        [[extent[0][1],
+        extent[0][0]],
+        [extent[1][1],
+        extent[1][0]]]);
+
+      // 0ms timeout to avoid iframe JS context weirdness.
+      // http://bl.ocks.org/jfirebaugh/5439412
+      parent.setTimeout(function() {
+        var hash = parent.OSM.formatHash({ lon: center[0], lat: center[1], zoom: zoom });
+        if (hash !== parent.location.hash) {
+          parent.location.replace(hash);
+        }
+      }, 0);
+    }));
 
     parent.$("body").on("click", "a.set_position", function (e) {
       e.preventDefault();
@@ -53,7 +63,7 @@
 
       // 0ms timeout to avoid iframe JS context weirdness.
       // http://bl.ocks.org/jfirebaugh/5439412
-      setTimeout(function() {
+      parent.setTimeout(function() {
         id.map().centerZoom(
           [data.lon, data.lat],
           Math.max(data.zoom || 15, 13));