This commit should have no functional affect. It just changes the abstraction level of OpenLayers from completely abstracting away getMapExtent etc, to using OpenLayers's functionality directly but providing proj and unproj to make projections palatable.
90 lines
2.2 KiB
Text
90 lines
2.2 KiB
Text
<%= javascript_include_tag 'openlayers.js' %>
|
|
<%= javascript_include_tag 'map.js' %>
|
|
|
|
<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);
|
|
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).addClass("selected");
|
|
}
|
|
|
|
function unHighlightChangeset(id) {
|
|
vectors.removeFeatures(highlight);
|
|
|
|
$("#tr-changeset-" + id).removeClass("selected");
|
|
}
|
|
|
|
function init() {
|
|
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? %>
|
|
<% 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);
|
|
|
|
addBoxToMap(bbox, "<%= edit.id %>", true);
|
|
<% end %>
|
|
<% end %>
|
|
|
|
vectors.events.on({
|
|
"featureselected": function(feature) {
|
|
highlightChangeset(feature.feature.fid);
|
|
},
|
|
"featureunselected": function(feature) {
|
|
unHighlightChangeset(feature.feature.fid);
|
|
}
|
|
});
|
|
|
|
var selectControl = new OpenLayers.Control.SelectFeature(vectors, {
|
|
multiple: false,
|
|
hover: true
|
|
});
|
|
map.addControl(selectControl);
|
|
selectControl.activate();
|
|
|
|
<% if ! @bbox.nil? %>
|
|
map.setExtent(proj(new OpenLayers.Bounds(<%= @bbox %>)));
|
|
<% else %>
|
|
map.setExtent(proj(bounds));
|
|
<% end %>
|
|
}
|
|
|
|
Event.observe(window, "load", init);
|
|
</script>
|