openstreetmap-website/app/views/changeset/_map.html.erb
John Firebaugh 5aa09fbfd0 Use a standard application.js bundle
Include map.js and menu.js in the bundle.
2012-08-27 20:31:17 +01:00

83 lines
2.1 KiB
Text

<div id="changeset_list_map">
</div>
<script type="text/javascript">
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");
}
$(document).ready(function () {
var map = createMap("changeset_list_map", {
controls: [
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.Zoom(),
new OpenLayers.Control.SimplePanZoom()
]
});
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.zoomToExtent(proj(new OpenLayers.Bounds(<%= @bbox %>)));
<% else %>
map.zoomToExtent(proj(bounds));
<% end %>
});
</script>