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