]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/changeset/_map.html.erb
It's zoomToExtent, not setExtent
[rails.git] / app / views / changeset / _map.html.erb
index 605eacf153613c44b2dda77fb92a875707621fec..88dd53c99a8e7847ee51119148bca318ea72405a 100644 (file)
@@ -1,56 +1,68 @@
-<%= javascript_include_tag '/openlayers/OpenLayers.js' %>
-<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
+<%= javascript_include_tag 'openlayers.js' %>
 <%= javascript_include_tag 'map.js' %>
 
-<div id="browse_map_changeset">
-  <div id="small_map">
-  </div>
-  <span id="loading"><%= t 'browse.map.loading' %></span>
+<div id="changeset_list_map">
 </div>
 
 <script type="text/javascript">
   OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
 
+  var highlight;
+
   function highlightChangeset(id) {
     var feature = vectors.getFeatureByFid(id);
-    feature.style.strokeColor = "#ffff55";
-    feature.style.strokeWidth = 4;
-    vectors.redraw(); 
+    var bounds = feature.geometry.getBounds();
+
+    if (bounds.containsBounds(map.getExtent())) {
+      bounds = map.getExtent().scale(1.1);
+    }
 
-    $("tr-changeset-" + id).addClassName("selected");
-  } 
+    if (highlight) vectors.removeFeatures(highlight);
+
+    highlight = new OpenLayers.Feature.Vector(bounds.toGeometry(), {}, {
+      strokeWidth: 2,
+      strokeColor: "#ee9900",
+      fillColor: "#ffff55",
+      fillOpacity: 0.5
+    });
+
+    vectors.addFeatures(highlight);
+
+    $("#tr-changeset-" + id).addClass("selected");
+  }
 
   function unHighlightChangeset(id) {
-    var feature = vectors.getFeatureByFid(id);
-    feature.style.strokeColor = "#ee9900";
-    feature.style.strokeWidth = 2;
-    vectors.redraw(); 
+    vectors.removeFeatures(highlight);
 
-    $("tr-changeset-" + id).removeClassName("selected");
-  }      
+    $("#tr-changeset-" + id).removeClass("selected");
+  }
 
   function init() {
-    var map = createMap("small_map", {
+    var map = createMap("changeset_list_map", {
       controls: [
         new OpenLayers.Control.Navigation(),
         new OpenLayers.Control.PanZoom(),
         new OpenLayers.Control.PanZoomBar()
       ]
     });
-    
+
     var bounds = new OpenLayers.Bounds();
 
     <% @edits.each do |edit| %>
-    var minlon = <%= edit.min_lon / GeoRecord::SCALE.to_f %>;
-    var minlat = <%= edit.min_lat / GeoRecord::SCALE.to_f %>;
-    var maxlon = <%= edit.max_lon / GeoRecord::SCALE.to_f %>;
-    var maxlat = <%= edit.max_lat / GeoRecord::SCALE.to_f %>;
+    <% if edit.has_valid_bbox? %>
+    <% bbox = edit.bbox.to_unscaled %>
+    var minlon = <%= bbox.min_lon %>;
+    var minlat = <%= bbox.min_lat %>;
+    var maxlon = <%= bbox.max_lon %>;
+    var maxlat = <%= bbox.max_lat %>;
     var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
 
     bounds.extend(bbox);
-    box = addBoxToMap(bbox, "<%= edit.id %>", true);
+
+    addBoxToMap(bbox, "<%= edit.id %>", true);
     <% end %>
-     
+    <% end %>
+
     vectors.events.on({
       "featureselected": function(feature) {
         highlightChangeset(feature.feature.fid);
     });
 
     var selectControl = new OpenLayers.Control.SelectFeature(vectors, {
-      multiple: false, 
+      multiple: false,
       hover: true
     });
     map.addControl(selectControl);
     selectControl.activate();
 
     <% if ! @bbox.nil? %>
-      setMapExtent(new OpenLayers.Bounds(<%= @bbox %>));
+      map.zoomToExtent(proj(new OpenLayers.Bounds(<%= @bbox %>)));
     <% else %>
-      setMapExtent(bounds);
+      map.zoomToExtent(proj(bounds));
     <% end %>
-
-    $("loading").innerHTML = "";
   }
 
   Event.observe(window, "load", init);