]> git.openstreetmap.org Git - rails.git/blob - app/views/changeset/_map.html.erb
34cf7002af256c39a685ff9cd94e72d05961dcb2
[rails.git] / app / views / changeset / _map.html.erb
1 <%= javascript_include_tag '/openlayers/OpenLayers.js' %>
2 <%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
3 <%= javascript_include_tag 'map.js' %>
4
5 <div id="changeset_list_map">
6 </div>
7
8 <script type="text/javascript">
9   OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
10
11   var highlight;
12
13   function highlightChangeset(id) {
14     var feature = vectors.getFeatureByFid(id);
15     var bounds = feature.geometry.getBounds();
16
17     if (bounds.containsBounds(map.getExtent())) {
18       bounds = map.getExtent().scale(1.1);
19     }
20
21     if (highlight) vectors.removeFeatures(highlight);
22
23     highlight = new OpenLayers.Feature.Vector(bounds.toGeometry(), {}, {
24       strokeWidth: 2,
25       strokeColor: "#ee9900",
26       fillColor: "#ffff55",
27       fillOpacity: 0.5
28     });
29
30     vectors.addFeatures(highlight);
31
32     $("tr-changeset-" + id).addClassName("selected");
33   }
34
35   function unHighlightChangeset(id) {
36     vectors.removeFeatures(highlight);
37
38     $("tr-changeset-" + id).removeClassName("selected");
39   }
40
41   function init() {
42     var map = createMap("changeset_list_map", {
43       controls: [
44         new OpenLayers.Control.Navigation(),
45         new OpenLayers.Control.PanZoom(),
46         new OpenLayers.Control.PanZoomBar()
47       ]
48     });
49
50     var bounds = new OpenLayers.Bounds();
51
52     <% @edits.each do |edit| %>
53     <% if edit.has_valid_bbox? %>
54     <% bbox = edit.bbox.to_unscaled %>
55     var minlon = <%= bbox.min_lon %>;
56     var minlat = <%= bbox.min_lat %>;
57     var maxlon = <%= bbox.max_lon %>;
58     var maxlat = <%= bbox.max_lat %>;
59     var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
60
61     bounds.extend(bbox);
62
63     addBoxToMap(bbox, "<%= edit.id %>", true);
64     <% end %>
65     <% end %>
66
67     vectors.events.on({
68       "featureselected": function(feature) {
69         highlightChangeset(feature.feature.fid);
70       },
71       "featureunselected": function(feature) {
72         unHighlightChangeset(feature.feature.fid);
73       }
74     });
75
76     var selectControl = new OpenLayers.Control.SelectFeature(vectors, {
77       multiple: false,
78       hover: true
79     });
80     map.addControl(selectControl);
81     selectControl.activate();
82
83     <% if ! @bbox.nil? %>
84       setMapExtent(new OpenLayers.Bounds(<%= @bbox %>));
85     <% else %>
86       setMapExtent(bounds);
87     <% end %>
88   }
89
90   Event.observe(window, "load", init);
91 </script>