1ee703e604579d01444a880ec12d7e5f26dcc9be
[rails.git] / app / assets / javascripts / index / contextmenu.js
1 OSM.initializeContextMenu = function (map) {
2   map.contextmenu.addItem({
3     text: I18n.t("javascripts.context.directions_from"),
4     callback: function directionsFromHere(e) {
5       var precision = OSM.zoomPrecision(map.getZoom()),
6           latlng = e.latlng.wrap(),
7           lat = latlng.lat.toFixed(precision),
8           lng = latlng.lng.toFixed(precision);
9
10       OSM.router.route("/directions?" + querystring.stringify({
11         from: lat + "," + lng,
12         to: $("#route_to").val()
13       }));
14     }
15   });
16
17   map.contextmenu.addItem({
18     text: I18n.t("javascripts.context.directions_to"),
19     callback: function directionsToHere(e) {
20       var precision = OSM.zoomPrecision(map.getZoom()),
21           latlng = e.latlng.wrap(),
22           lat = latlng.lat.toFixed(precision),
23           lng = latlng.lng.toFixed(precision);
24
25       OSM.router.route("/directions?" + querystring.stringify({
26         from: $("#route_from").val(),
27         to: lat + "," + lng
28       }));
29     }
30   });
31
32   map.contextmenu.addItem({
33     text: I18n.t("javascripts.context.add_note"),
34     callback: function addNoteHere(e) {
35       var precision = OSM.zoomPrecision(map.getZoom()),
36           latlng = e.latlng.wrap(),
37           lat = latlng.lat.toFixed(precision),
38           lng = latlng.lng.toFixed(precision);
39
40       OSM.router.route("/note/new?lat=" + lat + "&lon=" + lng);
41     }
42   });
43
44   map.contextmenu.addItem({
45     text: I18n.t("javascripts.context.show_address"),
46     callback: function describeLocation(e) {
47       var precision = OSM.zoomPrecision(map.getZoom()),
48           latlng = e.latlng.wrap(),
49           lat = latlng.lat.toFixed(precision),
50           lng = latlng.lng.toFixed(precision);
51
52       OSM.router.route("/search?query=" + encodeURIComponent(lat + "," + lng));
53     }
54   });
55
56   map.contextmenu.addItem({
57     text: I18n.t("javascripts.context.query_features"),
58     callback: function queryFeatures(e) {
59       var precision = OSM.zoomPrecision(map.getZoom()),
60           latlng = e.latlng.wrap(),
61           lat = latlng.lat.toFixed(precision),
62           lng = latlng.lng.toFixed(precision);
63
64       OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
65     }
66   });
67
68   map.contextmenu.addItem({
69     text: I18n.t("javascripts.context.centre_map"),
70     callback: function centreMap(e) {
71       map.panTo(e.latlng);
72     }
73   });
74
75   map.on("mousedown", function (e) {
76     if (e.originalEvent.shiftKey) map.contextmenu.disable();
77     else map.contextmenu.enable();
78   });
79
80   var updateMenu = function updateMenu () {
81     map.contextmenu.setDisabled(2, map.getZoom() < 12);
82     map.contextmenu.setDisabled(4, map.getZoom() < 14);
83   };
84
85   map.on("zoomend", updateMenu);
86   updateMenu();
87 };