r.route_to=null; // |
r.awaitingGeocode=false;// true if the user has requested a route, but we're waiting on a geocode result
r.awaitingRoute=false; // true if we've asked the engine for a route and are waiting to hear back
+ r.dragging=false; // true if the user is dragging a start/end point
r.viaPoints=[]; // not yet used
r.polyline=null; // Leaflet polyline object
r._gotGeocode=function(json,field) {
if (json.length==0) {
- alert("Sorry, couldn't find that place."); // *** internationalise
+ alert(I18n.t('javascripts.directions.errors.no_place'));
r[field.id]=null;
return;
}
};
// Marker has been dragged
r.markerDragged=function(e) {
- if (e.type=='drag' && !r.chosenEngine.draggable) return;
- if (e.type=='drag' && r.awaitingRoute) return;
+ r.dragging=(e.type=='drag'); // true for drag, false for dragend
+ if (r.dragging && !r.chosenEngine.draggable) return;
+ if (r.dragging && r.awaitingRoute) return;
r.setNumericInput(e.target.getLatLng(), e.target.options.name);
- r.requestRoute(e.type=='dragend', false);
+ r.requestRoute(!r.dragging, false);
};
// Set a route input field to a numeric value
r.setNumericInput=function(ll,id) {
document.body.appendChild(script);
};
r['gotRoute'+num]=function(data) {
- r.awaitingRoute=false; list[num].gotRoute(r,data);
+ r.awaitingRoute=false;
$(".query_wrapper.routing .spinner").hide();
+ if (!list[num].gotRoute(r,data)) {
+ // No route found
+ if (r.polyline) {
+ map.removeLayer(r.polyline);
+ r.polyline=null;
+ }
+ if (!r.dragging) { alert(I18n.t('javascripts.directions.errors.no_route')); }
+ }
};
}
select.append("<option value='"+i+"'>"+I18n.t(list[i].name)+"</option>");
},
gotRoute: function(router, data) {
if (!data.info.routeFound) {
- alert("Couldn't find route between those two places");
return false;
}
// Draw polyline
steps.push([{lat: latlng[0], lng: latlng[1]}, instrCode, instrText, distInMeter]);
}
router.setItinerary({steps: steps});
+ return true;
},
GH_INSTR_MAP: {
"-3": 6, // sharp left