]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/site/id.html.erb
The value of mapParams.object is always a node/way/relation now
[rails.git] / app / views / site / id.html.erb
index 96262f1e2c4e0b1480c09bf39bb8669f06f20d18..38f2e0d3d5d1ba4290eb1072db739547d54a788f 100644 (file)
       'Please upgrade your browser or use Potlatch 2 to edit the map.';
     document.getElementById('id-container').className = 'unsupported';
   } else {
-    <% locale = select_locale(ID::LOCALES) %>
+    <% locale = select_locale(ID::LOCALES).to_s %>
 
     var id = iD()
       .embed(true)
-      .assetPath("/assets/iD/") <%# Can't use asset_path('iD/') in production. %>
+      .assetPath("/iD/") <%# Can't use asset_path('iD/') in production. %>
+      .assetMap(<%= assets("iD").to_json.html_safe %>)
       .locale("<%= locale %>", "<%= asset_path("iD/locales/#{locale}.json") %>")
       .preauth({
         <% token = @user.access_token(ID_KEY) %>
         oauth_token_secret: "<%= token.secret %>"
       });
 
-    id.map().on('move.embed', function() {
-      var extent = id.map().extent(),
-          zoom = ~~id.map().zoom(),
-          center = id.map().center();
+    id.map().on('move.embed', parent.$.throttle(250, function() {
+      var zoom = ~~id.map().zoom(),
+        center = id.map().center(),
+        llz = { lon: center[0], lat: center[1], zoom: zoom };
 
-      parent.updatelinks(
-        center[0],
-        center[1],
-        zoom,
-        null,
-        extent[0][0],
-        extent[0][1],
-        extent[1][0],
-        extent[1][1]);
-    });
+      parent.updateLinks(llz, zoom);
+
+      // Manually resolve URL to avoid iframe JS context weirdness.
+      // http://bl.ocks.org/jfirebaugh/5439412
+      var hash = parent.OSM.formatHash(llz);
+      if (hash !== parent.location.hash) {
+        parent.location.replace(parent.location.href.replace(/(#.*|$)/, hash));
+      }
+    }));
 
     parent.$("body").on("click", "a.set_position", function (e) {
       e.preventDefault();
       }, 0);
     });
 
-    var maximized = false;
-    id.on('toggleFullscreen.embed', function() {
-      if (maximized) {
-        parent.minimiseMap();
-      } else {
-        parent.maximiseMap();
-      }
-      maximized = !maximized;
-    });
-
     d3.select('#id-container')
       .call(id.ui());
   }