From 9a05a7ba490cbf2ed7fdc50ef5ae203dc5cbfd18 Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Sat, 8 Mar 2014 15:17:22 +0000 Subject: [PATCH] Put marker at exact position user dragged it to --- app/assets/javascripts/index.js | 4 +++- app/assets/javascripts/routing.js.erb | 9 ++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 0a11b4899..178ed7611 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -359,8 +359,10 @@ $(document).ready(function () { $("#map").on('dragend dragover',function(e) { e.preventDefault(); }); $("#map").on('drop',function(e) { OSM.routing.handleDrop(e); e.preventDefault(); }); $(".routing_marker").on('dragstart',function(e) { - e.originalEvent.dataTransfer.effectAllowed = 'move'; + e.originalEvent.dataTransfer.effectAllowed = 'move'; e.originalEvent.dataTransfer.setData('id', this.id); + e.originalEvent.dataTransfer.setData('offsetX', e.originalEvent.target.width/2 - (e.originalEvent.x-e.target.x)); + e.originalEvent.dataTransfer.setData('offsetY', e.originalEvent.target.height - (e.originalEvent.y-e.target.y)); }); }); diff --git a/app/assets/javascripts/routing.js.erb b/app/assets/javascripts/routing.js.erb index 204606005..c774928b9 100644 --- a/app/assets/javascripts/routing.js.erb +++ b/app/assets/javascripts/routing.js.erb @@ -115,9 +115,12 @@ OSM.Routing=function(map,name,jqSearch) { // Drag and drop markers r.handleDrop=function(e) { - var id=e.originalEvent.dataTransfer.getData('id'); - var ll=r.map.mouseEventToLatLng(e.originalEvent); - // *** ^^^ this is slightly off - we need to work out the latLng of the tip + 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')); + var ll=map.containerPointToLatLng(pt); r.createMarker(ll,id); r.setNumericInput(ll,id); r.requestRoute(true, false); -- 2.43.2