df91d6d7b4a3a9b55f9d2544e3e3f5239c0948bc
[rails.git] / app / views / changeset / _map.html.erb
1 <div id="changeset_list_map">
2 </div>
3
4 <script type="text/javascript">
5   var highlight;
6
7   function highlightChangeset(id) {
8     var feature = vectors.getFeatureByFid(id);
9     var bounds = feature.geometry.getBounds();
10
11     if (bounds.containsBounds(map.getExtent())) {
12       bounds = map.getExtent().scale(1.1);
13     }
14
15     if (highlight) vectors.removeFeatures(highlight);
16
17     highlight = new OpenLayers.Feature.Vector(bounds.toGeometry(), {}, {
18       strokeWidth: 2,
19       strokeColor: "#ee9900",
20       fillColor: "#ffff55",
21       fillOpacity: 0.5
22     });
23
24     vectors.addFeatures(highlight);
25
26     $("#tr-changeset-" + id).addClass("selected");
27   }
28
29   function unHighlightChangeset(id) {
30     vectors.removeFeatures(highlight);
31
32     $("#tr-changeset-" + id).removeClass("selected");
33   }
34
35   $(document).ready(function () {
36     var map = createMap("changeset_list_map", {
37       controls: [
38         new OpenLayers.Control.Navigation(),
39         new OpenLayers.Control.Zoom(),
40         new OpenLayers.Control.SimplePanZoom()
41       ]
42     });
43
44     var bounds = new OpenLayers.Bounds();
45
46     $("[data-changeset]").each(function () {
47       var changeset = $(this).data('changeset');
48       if (changeset.bbox) {
49         var bbox = new OpenLayers.Bounds(changeset.bbox.minlon, changeset.bbox.minlat, changeset.bbox.maxlon, changeset.bbox.maxlat);
50
51         bounds.extend(bbox);
52
53         addBoxToMap(bbox, changeset.id, true);
54       }
55     });
56
57     vectors.events.on({
58       "featureselected": function(feature) {
59         highlightChangeset(feature.feature.fid);
60       },
61       "featureunselected": function(feature) {
62         unHighlightChangeset(feature.feature.fid);
63       }
64     });
65
66     var selectControl = new OpenLayers.Control.SelectFeature(vectors, {
67       multiple: false,
68       hover: true
69     });
70     map.addControl(selectControl);
71     selectControl.activate();
72
73     var params = OSM.mapParams();
74     if (params.bbox) {
75       map.zoomToExtent(proj(new OpenLayers.Bounds(params.minlon, params.minlat, params.maxlon, params.maxlat)));
76     } else {
77       map.zoomToExtent(proj(bounds));
78     }
79   });
80 </script>