]> git.openstreetmap.org Git - rails.git/blob - app/assets/javascripts/index.js
Precompile leaflet CSS
[rails.git] / app / assets / javascripts / index.js
1 //= require index/browse
2 //= require index/export
3 //= require index/key
4
5 $(document).ready(function () {
6   var permalinks = $("#permalink").html();
7   var marker;
8   var params = OSM.mapParams();
9   var map = createMap("map");
10
11   // https://github.com/CloudMade/Leaflet/issues/1063
12   map.on('load', function () {
13     L.control.scale().addTo(map);
14   });
15
16   map.attributionControl.setPrefix(permalinks);
17
18   map.on("moveend layeradd layerremove", updateLocation);
19
20   if (!params.object_zoom) {
21     if (params.bbox) {
22       var bbox = L.latLngBounds([params.minlat, params.minlon],
23                                 [params.maxlat, params.maxlon]);
24
25       map.fitBounds(bbox);
26
27       if (params.box) {
28         addBoxToMap(bbox);
29       }
30     } else {
31       map.setView([params.lat, params.lon], params.zoom);
32     }
33   }
34
35   if (params.layers) {
36     setMapLayers(params.layers);
37   }
38
39   if (params.marker) {
40     marker = addMarkerToMap([params.mlat, params.mlon]);
41   }
42
43   if (params.object) {
44     addObjectToMap(params.object, params.object_zoom);
45   }
46
47   handleResize();
48
49   $("body").on("click", "a.set_position", function (e) {
50     e.preventDefault();
51
52     var data = $(this).data();
53     var centre = L.latLng(data.lat, data.lon);
54
55     if (data.minLon && data.minLat && data.maxLon && data.maxLat) {
56       map.fitBounds([[data.minLat, data.minLon],
57                      [data.maxLat, data.maxLon]]);
58     } else {
59       map.setView(centre, data.zoom);
60     }
61
62     if (marker) {
63       removeMarkerFromMap(marker);
64     }
65
66     marker = addMarkerToMap(centre, getArrowIcon());
67   });
68
69   function updateLocation() {
70     var center = map.getCenter();
71     var zoom = map.getZoom();
72     var layers = getMapLayers();
73     var extents = map.getBounds();
74
75     updatelinks(center.lng,
76                 center.lat,
77                 zoom,
78                 layers,
79                 extents.getWestLng(),
80                 extents.getSouthLat(),
81                 extents.getEastLng(),
82                 extents.getNorthLat(),
83                 params.object);
84
85     var expiry = new Date();
86     expiry.setYear(expiry.getFullYear() + 10);
87     $.cookie("_osm_location", [center.lng, center.lat, zoom, layers].join("|"), {expires: expiry});
88   }
89
90   function remoteEditHandler() {
91     var extent = map.getBounds();
92     var loaded = false;
93
94     $("#linkloader").load(function () { loaded = true; });
95     $("#linkloader").attr("src", "http://127.0.0.1:8111/load_and_zoom?left=" + extent.getWestLng()
96                                                                    + "&bottom=" + extent.getSouthLat()
97                                                                    + "&right=" + extent.getEastLng()
98                                                                    + "&top=" + extent.getNorthLat());
99
100     setTimeout(function () {
101       if (!loaded) alert(I18n.t('site.index.remote_failed'));
102     }, 1000);
103
104     return false;
105   }
106
107   $("a[data-editor=remote]").click(remoteEditHandler);
108
109   if (OSM.preferred_editor == "remote" && $('body').hasClass("site-edit")) {
110     remoteEditHandler();
111   }
112
113   $(window).resize(function() {
114     var centre = map.getCenter();
115     var zoom = map.getZoom();
116
117     handleResize();
118
119     map.setCenter(centre, zoom);
120   });
121
122   $("#search_form").submit(function () {
123     var bounds = map.getBounds();
124
125     $("#sidebar_title").html(I18n.t('site.sidebar.search_results'));
126     $("#sidebar_content").load($(this).attr("action"), {
127       query: $("#query").val(),
128       minlon: bounds.getSouthWest().lng,
129       minlat: bounds.getSouthWest().lat,
130       maxlon: bounds.getNorthEast().lng,
131       maxlat: bounds.getNorthEast().lat
132     }, openSidebar);
133
134     return false;
135   });
136
137   if ($("#query").val()) {
138     $("#search_form").submit();
139   }
140 });