<%= javascript_include_tag '/openlayers/OpenStreetMap.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);
+ }
+
+ 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).addClassName("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");
- }
+ }
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| %>
+ <% if edit.has_valid_bbox? %>
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 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);
<% else %>
setMapExtent(bounds);
<% end %>
-
- $("loading").innerHTML = "";
}
Event.observe(window, "load", init);