Tidy up code for adding a map to the changeset list page
[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="browse_map_changeset">
6   <div id="small_map">
7   </div>
8   <span id="loading"><%= t 'browse.map.loading' %></span>
9 </div>
10
11 <script type="text/javascript">
12   OpenLayers.Lang.setCode("<%= I18n.locale.to_s %>");
13
14   function highlightChangeset(id) {
15     var feature = vectors.getFeatureByFid(id);
16     feature.style.strokeColor = "#ffff55";
17     feature.style.strokeWidth = 4;
18     vectors.redraw(); 
19
20     $("tr-changeset-" + id).addClassName("selected");
21   } 
22
23   function unHighlightChangeset(id) {
24     var feature = vectors.getFeatureByFid(id);
25     feature.style.strokeColor = "#ee9900";
26     feature.style.strokeWidth = 2;
27     vectors.redraw(); 
28
29     $("tr-changeset-" + id).removeClassName("selected");
30   }      
31
32   function init() {
33     var map = createMap("small_map", {
34       controls: [
35         new OpenLayers.Control.Navigation(),
36         new OpenLayers.Control.PanZoom(),
37         new OpenLayers.Control.PanZoomBar()
38       ]
39     });
40     
41     var bounds = new OpenLayers.Bounds();
42
43     <% @edits.each do |edit| %>
44     var minlon = <%= edit.min_lon / GeoRecord::SCALE.to_f %>;
45     var minlat = <%= edit.min_lat / GeoRecord::SCALE.to_f %>;
46     var maxlon = <%= edit.max_lon / GeoRecord::SCALE.to_f %>;
47     var maxlat = <%= edit.max_lat / GeoRecord::SCALE.to_f %>;
48     var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
49
50     bounds.extend(bbox);
51     box = addBoxToMap(bbox, "<%= edit.id %>", true);
52     <% end %>
53      
54     vectors.events.on({
55       "featureselected": function(feature) {
56         highlightChangeset(feature.feature.fid);
57       },
58       "featureunselected": function(feature) {
59         unHighlightChangeset(feature.feature.fid);
60       }
61     });
62
63     var selectControl = new OpenLayers.Control.SelectFeature(vectors, {
64       multiple: false, 
65       hover: true
66     });
67     map.addControl(selectControl);
68     selectControl.activate();
69
70     <% if ! @bbox.nil? %>
71       setMapExtent(new OpenLayers.Bounds(<%= @bbox %>));
72     <% else %>
73       setMapExtent(bounds);
74     <% end %>
75
76     $("loading").innerHTML = "";
77   }
78
79   Event.observe(window, "load", init);
80 </script>