]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/index.js
Merge branch 'master' into notes
[rails.git] / app / assets / javascripts / index.js
1 //= require index/browse
2 //= require index/export
3 //= require index/key
4 //= require index/notes
5
6 $(document).ready(function () {
7   var marker;
8   var params = OSM.mapParams();
9   var map = createMap("map");
10
11   map.events.register("moveend", map, updateLocation);
12   map.events.register("changelayer", map, updateLocation);
13
14   if (!params.object_zoom) {
15     if (params.bbox) {
16       var bbox = new OpenLayers.Bounds(params.minlon, params.minlat, params.maxlon, params.maxlat);
17
18       map.zoomToExtent(proj(bbox));
19
20       if (params.box) {
21         addBoxToMap(bbox);
22       }
23     } else {
24       setMapCenter(new OpenLayers.LonLat(params.lon, params.lat), params.zoom);
25     }
26   }
27
28   if (params.layers) {
29     setMapLayers(params.layers);
30   }
31
32   if (params.marker) {
33     marker = addMarkerToMap(new OpenLayers.LonLat(params.mlon, params.mlat));
34   }
35
36   if (params.object) {
37     addObjectToMap(params.object, params.object_zoom);
38   }
39
40   handleResize();
41
42   $("body").on("click", "a.set_position", function () {
43     var data = $(this).data();
44     var centre = new OpenLayers.LonLat(data.lon, data.lat);
45
46     if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
47       var bbox = new OpenLayers.Bounds(data.minLon, data.minLat, data.maxLon, data.maxLat);
48
49       map.zoomToExtent(proj(bbox));
50     } else {
51       setMapCenter(centre, data.zoom);
52     }
53
54     if (marker) {
55       removeMarkerFromMap(marker);
56     }
57
58     marker = addMarkerToMap(centre, getArrowIcon());
59
60     return false;
61   });
62
63   function updateLocation() {
64     var lonlat = unproj(map.getCenter());
65     var zoom = map.getZoom();
66     var layers = getMapLayers();
67     var extents = unproj(map.getExtent());
68     var expiry = new Date();
69
70     updatelinks(lonlat.lon, lonlat.lat, zoom, layers, extents.left, extents.bottom, extents.right, extents.top, params.object);
71
72     expiry.setYear(expiry.getFullYear() + 10);
73     $.cookie("_osm_location", [lonlat.lon, lonlat.lat, zoom, layers].join("|"), {expires: expiry});
74   }
75
76   function remoteEditHandler(event) {
77     var extent = unproj(map.getExtent());
78     var loaded = false;
79
80     $("#linkloader").load(function () { loaded = true; });
81     $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?left=" + extent.left + "&top=" + extent.top + "&right=" + extent.right + "&bottom=" + extent.bottom);
82
83     setTimeout(function () {
84       if (!loaded) alert(I18n.t('site.index.remote_failed'));
85     }, 1000);
86
87     return false;
88   }
89
90   $("a[data-editor=remote]").click(remoteEditHandler);
91
92   if (OSM.preferred_editor == "remote" && $('body').hasClass("site-edit")) {
93     remoteEditHandler();
94   }
95
96   $(window).resize(function() {
97     var centre = map.getCenter();
98     var zoom = map.getZoom();
99
100     handleResize();
101
102     map.setCenter(centre, zoom);
103   });
104
105   $("#search_form").submit(function () {
106     var extent = unproj(map.getExtent());
107
108     $("#sidebar_title").html(I18n.t('site.sidebar.search_results'));
109     $("#sidebar_content").load($(this).attr("action"), {
110       query: $("#query").val(),
111       minlon: extent.left,
112       minlat: extent.bottom,
113       maxlon: extent.right,
114       maxlat: extent.top
115     }, openSidebar);
116
117     return false;
118   });
119
120   if ($("#query").val()) {
121     $("#search_form").submit();
122   }
123 });