X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/cd61c8e0653b8edd5229e73f19aa89b54e5df74c..35fbcf28154b6f15f697018016fbabc952e018a5:/app/assets/javascripts/index.js diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 8964cef1d..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,38 +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) - })); - } - - 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); - } - // TODO internationalisation of the context menu strings var map = new L.OSM.Map("map", { zoomControl: false, @@ -116,22 +85,36 @@ $(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: function(e){ context_queryhere(e, map) } }, { text: 'Centre map here', - callback: context_centrehere + callback: function(e){ context_centrehere(e, map) } }] }); + $(document).on('mousedown', function(e){ + if(e.shiftKey){ + 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); + } + }); + map.attributionControl.setPrefix(''); map.updateLayers(params.layers);