X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/1596713871672cc319b0d68b51a3698cc6bf0972..db7374f2bbdd0b3ee0f3cb0a9cca84f9c72cffb5:/app/assets/javascripts/index/directions.js?ds=sidebyside diff --git a/app/assets/javascripts/index/directions.js b/app/assets/javascripts/index/directions.js index 82c4d6456..a5f3b0080 100644 --- a/app/assets/javascripts/index/directions.js +++ b/app/assets/javascripts/index/directions.js @@ -108,7 +108,7 @@ OSM.Directions = function (map) { return endpoint; } - $(".directions_form a.directions_close").on("click", function(e) { + $(".directions_form .close").on("click", function(e) { e.preventDefault(); var route_from = endpoints[0].value; if (route_from) { @@ -145,6 +145,9 @@ OSM.Directions = function (map) { } function getRoute() { + // Cancel any route that is already in progress + if (awaitingRoute) awaitingRoute.abort(); + // 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); @@ -301,11 +303,9 @@ 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); + e.originalEvent.dataTransfer.setData('type', $(this).data('type')); + var img = $("").attr("src", $(e.originalEvent.target).attr("src")); + e.originalEvent.dataTransfer.setDragImage(img.get(0), 12, 21); }); var page = {}; @@ -321,12 +321,11 @@ OSM.Directions = function (map) { $("#map").on('drop', function (e) { e.preventDefault(); var oe = e.originalEvent; - var id = oe.dataTransfer.getData('id'); + var type = oe.dataTransfer.getData('type'); 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); + endpoints[type === 'from' ? 0 : 1].setLatLng(ll); getRoute(); }); @@ -337,13 +336,8 @@ OSM.Directions = function (map) { setEngine(params.engine); } - if (params.from) { - endpoints[0].setValue(params.from); - endpoints[1].setValue(""); - } else { - endpoints[0].setValue(""); - endpoints[1].setValue(""); - } + endpoints[0].setValue(params.from || ""); + endpoints[1].setValue(params.to || ""); var o = route[0] && L.latLng(route[0].split(',')), d = route[1] && L.latLng(route[1].split(','));