Put marker at exact position user dragged it to

This commit is contained in:
Richard Fairhurst 2014-03-08 15:17:22 +00:00
parent 15904542a6
commit 9a05a7ba49
2 changed files with 9 additions and 4 deletions

View file

@ -359,8 +359,10 @@ $(document).ready(function () {
$("#map").on('dragend dragover',function(e) { e.preventDefault(); }); $("#map").on('dragend dragover',function(e) { e.preventDefault(); });
$("#map").on('drop',function(e) { OSM.routing.handleDrop(e); e.preventDefault(); }); $("#map").on('drop',function(e) { OSM.routing.handleDrop(e); e.preventDefault(); });
$(".routing_marker").on('dragstart',function(e) { $(".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('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));
}); });
}); });

View file

@ -115,9 +115,12 @@ OSM.Routing=function(map,name,jqSearch) {
// Drag and drop markers // Drag and drop markers
r.handleDrop=function(e) { r.handleDrop=function(e) {
var id=e.originalEvent.dataTransfer.getData('id'); var oe=e.originalEvent;
var ll=r.map.mouseEventToLatLng(e.originalEvent); var id=oe.dataTransfer.getData('id');
// *** ^^^ this is slightly off - we need to work out the latLng of the tip 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.createMarker(ll,id);
r.setNumericInput(ll,id); r.setNumericInput(ll,id);
r.requestRoute(true, false); r.requestRoute(true, false);