Improve error-handling

This commit is contained in:
Richard Fairhurst 2014-03-08 12:07:54 +00:00
parent 902f1b0887
commit 5b6558c0f2
6 changed files with 22 additions and 7 deletions

View file

@ -56,6 +56,7 @@ OSM.Routing=function(map,name,jqSearch) {
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
@ -97,7 +98,7 @@ OSM.Routing=function(map,name,jqSearch) {
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;
}
@ -143,10 +144,11 @@ OSM.Routing=function(map,name,jqSearch) {
};
// 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) {
@ -247,8 +249,16 @@ OSM.Routing=function(map,name,jqSearch) {
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>");

View file

@ -28,6 +28,7 @@ OSM.RoutingEngines.list.push({
url+="/foot.js";
url+="?lang=" + I18n.currentLocale();
this.requestJSONP(url+"&callback=");
return true;
},
gotRoute: function(router,data) {
router.setPolyline(data.route_geometry);

View file

@ -17,7 +17,6 @@ OSM.RoutingEngines.list.push({
},
gotRoute: function(router, data) {
if (!data.info.routeFound) {
alert("Couldn't find route between those two places");
return false;
}
// Draw polyline
@ -36,6 +35,7 @@ OSM.RoutingEngines.list.push({
steps.push([{lat: latlng[0], lng: latlng[1]}, instrCode, instrText, distInMeter]);
}
router.setItinerary({steps: steps});
return true;
},
GH_INSTR_MAP: {
"-3": 6, // sharp left

View file

@ -60,5 +60,6 @@ OSM.RoutingEngines.list.push({
steps.push([L.latLng(s.startPoint.lat, s.startPoint.lng), d, s.narrative, s.distance*1000]);
}
router.setItinerary( { steps: steps });
return true;
}
});

View file

@ -19,7 +19,6 @@ OSM.RoutingEngines.list.push({
},
gotRoute: function(router,data) {
if (data.status==207) {
alert("Couldn't find route between those two places");
return false;
}
// Draw polyline
@ -39,5 +38,6 @@ OSM.RoutingEngines.list.push({
steps.push([line[s[3]], s[0].split('-')[0], instText, s[2]]);
}
if (steps.length) router.setItinerary({ steps: steps });
return true;
}
});

View file

@ -2125,6 +2125,9 @@ en:
osrm_car: "Car (OSRM)"
cloudmade_foot: "Foot (Cloudmade)"
directions: "Directions"
errors:
no_route: "Couldn't find a route between those two places."
no_place: "Sorry - couldn't find that place."
instructions:
continue_on: "Continue on "
slight_right: "Slight right onto "