X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/e256c837b56d9f1c40c0c57dd89db4825bc7489e..fa3ccdfd49bf62737d163fe3a637939f291b7815:/app/assets/javascripts/index/directions.js diff --git a/app/assets/javascripts/index/directions.js b/app/assets/javascripts/index/directions.js index 31144a547..f7ac87636 100644 --- a/app/assets/javascripts/index/directions.js +++ b/app/assets/javascripts/index/directions.js @@ -42,7 +42,7 @@ OSM.Directions = function (map) { }); endpoint.marker.on('drag dragend', function (e) { - dragging = (e.type == 'drag'); + dragging = (e.type === 'drag'); if (dragging && !chosenEngine.draggable) return; if (dragging && awaitingRoute) return; endpoint.setLatLng(e.target.getLatLng()); @@ -54,7 +54,7 @@ OSM.Directions = function (map) { input.on("change", function (e) { // make text the same in both text boxes var value = e.target.value; - endpoint.setValue(value) + endpoint.setValue(value); }); endpoint.setValue = function(value) { @@ -62,7 +62,7 @@ OSM.Directions = function (map) { delete endpoint.latlng; input.val(value); endpoint.getGeocode(); - } + }; endpoint.getGeocode = function() { // if no one has entered a value yet, then we can't geocode, so don't @@ -76,7 +76,7 @@ OSM.Directions = function (map) { $.getJSON(document.location.protocol + OSM.NOMINATIM_URL + 'search?q=' + encodeURIComponent(endpoint.value) + '&format=json', function (json) { endpoint.awaitingGeocode = false; endpoint.hasGeocode = true; - if (json.length == 0) { + if (json.length === 0) { alert(I18n.t('javascripts.directions.errors.no_place')); return; } @@ -93,7 +93,7 @@ OSM.Directions = function (map) { getRoute(); } }); - } + }; endpoint.setLatLng = function (ll) { var precision = OSM.zoomPrecision(map.getZoom()); @@ -137,7 +137,7 @@ OSM.Directions = function (map) { function setEngine(id) { engines.forEach(function(engine, i) { - if (engine.id == id) { + if (engine.id === id) { chosenEngine = engine; select.val(i); } @@ -145,6 +145,9 @@ OSM.Directions = function (map) { } function getRoute() { + // Cancel any route that is already in progress + if (awaitingRoute) awaitingRoute.abourt(); + // go fetch geocodes for any endpoints which have not already // been geocoded. for (var ep_i = 0; ep_i < 2; ++ep_i) { @@ -177,11 +180,10 @@ OSM.Directions = function (map) { // just using it in-place and replacing it in case it has to be used // again. $('#sidebar_content').html($('.directions_form .loader_copy').html()); - awaitingRoute = true; map.setSidebarOverlaid(false); - chosenEngine.getRoute([o, d], function (err, route) { - awaitingRoute = false; + awaitingRoute = chosenEngine.getRoute([o, d], function (err, route) { + awaitingRoute = null; if (err) { map.removeLayer(polyline); @@ -302,10 +304,8 @@ OSM.Directions = function (map) { $(".routing_marker").on('dragstart', function (e) { e.originalEvent.dataTransfer.effectAllowed = 'move'; e.originalEvent.dataTransfer.setData('id', this.id); - var xo = e.originalEvent.clientX - $(e.target).offset().left; - var yo = e.originalEvent.clientY - $(e.target).offset().top; - e.originalEvent.dataTransfer.setData('offsetX', e.originalEvent.target.width / 2 - xo); - e.originalEvent.dataTransfer.setData('offsetY', e.originalEvent.target.height - yo); + var img = $("").attr("src", $(e.originalEvent.target).attr("src")); + e.originalEvent.dataTransfer.setDragImage(img.get(0), 12, 21); }); var page = {}; @@ -323,8 +323,7 @@ OSM.Directions = function (map) { var oe = e.originalEvent; var id = oe.dataTransfer.getData('id'); var pt = L.DomEvent.getMousePosition(oe, map.getContainer()); // co-ordinates of the mouse pointer at present - pt.x += Number(oe.dataTransfer.getData('offsetX')); - pt.y += Number(oe.dataTransfer.getData('offsetY')); + pt.y += 20; var ll = map.containerPointToLatLng(pt); endpoints[id === 'marker_from' ? 0 : 1].setLatLng(ll); getRoute(); @@ -378,7 +377,7 @@ OSM.Directions = function (map) { OSM.Directions.engines = []; OSM.Directions.addEngine = function (engine, supportsHTTPS) { - if (document.location.protocol == "http:" || supportsHTTPS) { + if (document.location.protocol === "http:" || supportsHTTPS) { OSM.Directions.engines.push(engine); } };