X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/8d0472f2cade9739f3b60cda17afe8289322e2f4..35fbcf28154b6f15f697018016fbabc952e018a5:/app/assets/javascripts/index.js diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 69e223b22..01682d5f8 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -8,6 +8,7 @@ //= require leaflet.polyline //= require leaflet.query //= require leaflet.contextmenu +//= require index/contextmenu //= require index/search //= require index/browse //= require index/export @@ -76,48 +77,6 @@ $(document).ready(function () { var params = OSM.mapParams(); - // TODO consider using a separate js file for the context menu additions - var context_describe = function(e){ - var precision = OSM.zoomPrecision(map.getZoom()); - OSM.router.route("/search?query=" + encodeURIComponent( - e.latlng.lat.toFixed(precision) + "," + e.latlng.lng.toFixed(precision) - )); - }; - - var context_directionsfrom = function(e){ - var precision = OSM.zoomPrecision(map.getZoom()); - OSM.router.route("/directions?" + querystring.stringify({ - route: e.latlng.lat.toFixed(precision) + ',' + e.latlng.lng.toFixed(precision) + ';' + $('#route_to').val() - })); - } - - var context_directionsto = function(e){ - var precision = OSM.zoomPrecision(map.getZoom()); - OSM.router.route("/directions?" + querystring.stringify({ - route: $('#route_from').val() + ';' + e.latlng.lat.toFixed(precision) + ',' + e.latlng.lng.toFixed(precision) - })); - } - - // TODO only allow this if zoomed in enough - var context_addnote = function(e){ - // TODO this currently doesn't work correctly - I think the "route" needs to be chained to ensure it comes once the pan has finished. - map.panTo(e.latlng, {animate: false}); - OSM.router.route('/note/new'); - } - - var context_centrehere = function(e){ - map.panTo(e.latlng); - } - - var context_queryhere = function(e) { - var precision = OSM.zoomPrecision(map.getZoom()), - latlng = e.latlng.wrap(), - lat = latlng.lat.toFixed(precision), - lng = latlng.lng.toFixed(precision); - - OSM.router.route("/query?lat=" + lat + "&lon=" + lng); - } - // TODO internationalisation of the context menu strings var map = new L.OSM.Map("map", { zoomControl: false, @@ -126,22 +85,22 @@ $(document).ready(function () { contextmenuWidth: 140, contextmenuItems: [{ text: 'Directions from here', - callback: context_directionsfrom + callback: function(e){ context_directionsfrom(e, map) } }, { text: 'Directions to here', - callback: context_directionsto + callback: function(e){ context_directionsto(e, map) } }, '-', { text: 'Add a note here', - callback: context_addnote + callback: function(e){ context_addnote(e, map) } }, { text: 'Show address', - callback: context_describe + callback: function(e){ context_describe(e, map) } }, { text: 'Query features', - callback: context_queryhere + callback: function(e){ context_queryhere(e, map) } }, { text: 'Centre map here', - callback: context_centrehere + callback: function(e){ context_centrehere(e, map) } }] }); @@ -150,6 +109,9 @@ $(document).ready(function () { map.contextmenu.disable(); // on firefox, shift disables our contextmenu. we explicitly do this for all browsers. }else{ map.contextmenu.enable(); + // we also decide whether to disable some options that only like high zoom + map.contextmenu.setDisabled(3, map.getZoom() < 12); + map.contextmenu.setDisabled(5, map.getZoom() < 14); } });