@@ -197,16 +197,17 @@ function initMap() {
197
197
198
198
routingLayer = L . geoJson ( ) . addTo ( map ) ;
199
199
clickToRoute = true ;
200
- function onMapClick ( e ) {
200
+ function onMapClick ( e ) {
201
+ var latlng = e . latlng ;
201
202
if ( clickToRoute ) {
202
203
// set start point
203
204
routingLayer . clearLayers ( ) ;
204
205
clickToRoute = false ;
205
- ghRequest . from . setCoord ( e . latlng . lat , e . latlng . lng ) ;
206
+ ghRequest . from . setCoord ( latlng . lat , latlng . lng ) ;
206
207
resolveFrom ( ) ;
207
208
} else {
208
209
// set end point
209
- ghRequest . to . setCoord ( e . latlng . lat , e . latlng . lng ) ;
210
+ ghRequest . to . setCoord ( latlng . lat , latlng . lng ) ;
210
211
resolveTo ( ) ;
211
212
// do not wait for resolving
212
213
routeLatLng ( ghRequest ) ;
@@ -218,9 +219,24 @@ function initMap() {
218
219
219
220
function setFlag ( latlng , isFrom ) {
220
221
if ( latlng . lat ) {
221
- L . marker ( [ latlng . lat , latlng . lng ] , {
222
- icon : ( isFrom ? iconFrom : iconTo )
222
+ var marker = L . marker ( [ latlng . lat , latlng . lng ] , {
223
+ icon : ( isFrom ? iconFrom : iconTo ) ,
224
+ draggable : true
223
225
} ) . addTo ( routingLayer ) . bindPopup ( isFrom ? "Start" : "End" ) ;
226
+ marker . on ( 'dragend' , function ( e ) {
227
+ routingLayer . clearLayers ( ) ;
228
+ // inconsistent leaflet API: event.target.getLatLng vs. mouseEvent.latlng?
229
+ var latlng = e . target . getLatLng ( ) ;
230
+ if ( isFrom ) {
231
+ ghRequest . from . setCoord ( latlng . lat , latlng . lng ) ;
232
+ resolveFrom ( ) ;
233
+ } else {
234
+ ghRequest . to . setCoord ( latlng . lat , latlng . lng ) ;
235
+ resolveTo ( ) ;
236
+ }
237
+ // do not wait for resolving
238
+ routeLatLng ( ghRequest ) ;
239
+ } ) ;
224
240
}
225
241
}
226
242
0 commit comments