From a997690897b765ec763631c31b9e4ca87b4e530f Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Sat, 8 Mar 2014 13:37:27 +0000 Subject: [PATCH] Refactor MQ/OSRM engines a la @karussell patch --- .../javascripts/routing_engines/mapquest.js | 81 +++++++++++++++++++ .../routing_engines/mapquest_bicycle.js | 65 --------------- .../javascripts/routing_engines/osrm.js | 55 +++++++++++++ .../javascripts/routing_engines/osrm_car.js | 43 ---------- config/locales/en.yml | 5 +- 5 files changed, 139 insertions(+), 110 deletions(-) create mode 100644 app/assets/javascripts/routing_engines/mapquest.js delete mode 100644 app/assets/javascripts/routing_engines/mapquest_bicycle.js create mode 100644 app/assets/javascripts/routing_engines/osrm.js delete mode 100644 app/assets/javascripts/routing_engines/osrm_car.js diff --git a/app/assets/javascripts/routing_engines/mapquest.js b/app/assets/javascripts/routing_engines/mapquest.js new file mode 100644 index 000000000..f31a84458 --- /dev/null +++ b/app/assets/javascripts/routing_engines/mapquest.js @@ -0,0 +1,81 @@ +// see: +// http://developer.mapquest.com/web/products/open/directions-service +// http://open.mapquestapi.com/directions/ +// https://github.com/apmon/openstreetmap-website/blob/21edc353a4558006f0ce23f5ec3930be6a7d4c8b/app/controllers/routing_controller.rb#L153 + +MapQuestEngine = function(vehicleName, vehicleParam, locale) { + this.vehicleName = vehicleName; + this.vehicleParam = vehicleParam; + this.locale = locale; + if (!locale) + this.locale = "en"; +}; + +MapQuestEngine.prototype.createConfig = function() { + var that = this; + return { + name: "javascripts.directions.engines.mapquest_"+this.vehicleName.toLowerCase(), + creditline: 'Directions courtesy of MapQuest ', + draggable: false, + _hints: {}, + MQ_SPRITE_MAP: { + 0: 1, // straight + 1: 2, // slight right + 2: 3, // right + 3: 4, // sharp right + 4: 5, // reverse + 5: 6, // sharp left + 6: 7, // left + 7: 8, // slight left + 8: 5, // right U-turn + 9: 5, // left U-turn + 10: 2, // right merge + 11: 8, // left merge + 12: 2, // right on-ramp + 13: 8, // left on-ramp + 14: 2, // right off-ramp + 15: 8, // left off-ramp + 16: 2, // right fork + 17: 8, // left fork + 18: 1 // straight fork + }, + getRoute: function(isFinal,points) { + var url="http://open.mapquestapi.com/directions/v2/route?key=Fmjtd%7Cluur290anu%2Crl%3Do5-908a0y"; + var from=points[0]; var to=points[points.length-1]; + url+="&from="+from.join(','); + url+="&to="+to.join(','); + url+="&"+that.vehicleParam; + //url+="&locale=" + I18n.currentLocale(); //Doesn't actually work. MapQuest requires full locale e.g. "de_DE", but I18n only provides language, e.g. "de" + url+="&manMaps=false"; + url+="&shapeFormat=raw&generalize=0"; + this.requestJSONP(url+"&callback="); + }, + gotRoute: function(router,data) { + // *** what if no route? + + var poly=[]; + var shape=data.route.shape.shapePoints; + for (var i=0; iMapQuest ', - draggable: false, - _hints: {}, - MQ_SPRITE_MAP: { - 0: 1, // straight - 1: 2, // slight right - 2: 3, // right - 3: 4, // sharp right - 4: 5, // reverse - 5: 6, // sharp left - 6: 7, // left - 7: 8, // slight left - 8: 5, // right U-turn - 9: 5, // left U-turn - 10: 2, // right merge - 11: 8, // left merge - 12: 2, // right on-ramp - 13: 8, // left on-ramp - 14: 2, // right off-ramp - 15: 8, // left off-ramp - 16: 2, // right fork - 17: 8, // left fork - 18: 1 // straight fork - }, - getRoute: function(isFinal,points) { - var url="http://open.mapquestapi.com/directions/v2/route?key=Fmjtd%7Cluur290anu%2Crl%3Do5-908a0y"; - var from=points[0]; var to=points[points.length-1]; - url+="&from="+from.join(','); - url+="&to="+to.join(','); - url+="&routeType=bicycle"; - //url+="&locale=" + I18n.currentLocale(); //Doesn't actually work. MapQuest requires full locale e.g. "de_DE", but I18n only provides language, e.g. "de" - url+="&manMaps=false"; - url+="&shapeFormat=raw&generalize=0"; - this.requestJSONP(url+"&callback="); - }, - gotRoute: function(router,data) { - // *** what if no route? - - var poly=[]; - var shape=data.route.shape.shapePoints; - for (var i=0; iOSRM', + draggable: true, + _hints: {}, + getRoute: function(isFinal,points) { + var url=that.baseURL+"?z=14&output=json"; + for (var i=0; i"+(i+1)+". "; + instText+=TURN_INSTRUCTIONS[instCodes[0]]; + if (instCodes[1]) { instText+="exit "+instCodes[1]+" "; } + if (instCodes[0]!=15) { instText+=s[1] ? ""+s[1]+"" : I18n.t('javascripts.directions.instructions.unnamed'); } + steps.push([line[s[3]], s[0].split('-')[0], instText, s[2]]); + } + if (steps.length) router.setItinerary({ steps: steps }); + return true; + } + }; +}; + +OSM.RoutingEngines.list.push(new OSRMEngine("Car", "http://router.project-osrm.org/viaroute").createConfig()); diff --git a/app/assets/javascripts/routing_engines/osrm_car.js b/app/assets/javascripts/routing_engines/osrm_car.js deleted file mode 100644 index 8ff6ba482..000000000 --- a/app/assets/javascripts/routing_engines/osrm_car.js +++ /dev/null @@ -1,43 +0,0 @@ -// OSRM car engine -// *** this should all be shared from an OSRM library somewhere -// *** need to clear hints at some point - -OSM.RoutingEngines.list.push({ - name: "javascripts.directions.engines.osrm_car", - creditline: 'Directions courtesy of OSRM', - draggable: true, - _hints: {}, - getRoute: function(isFinal,points) { - var url="http://router.project-osrm.org/viaroute?z=14&output=json"; - for (var i=0; i"+(i+1)+". "; - instText+=TURN_INSTRUCTIONS[instCodes[0]]; - if (instCodes[1]) { instText+="exit "+instCodes[1]+" "; } - if (instCodes[0]!=15) { instText+=s[1] ? ""+s[1]+"" : I18n.t('javascripts.directions.instructions.unnamed'); } - steps.push([line[s[3]], s[0].split('-')[0], instText, s[2]]); - } - if (steps.length) router.setItinerary({ steps: steps }); - return true; - } -}); diff --git a/config/locales/en.yml b/config/locales/en.yml index 8cb9c9674..e5bb7f3f0 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2122,9 +2122,10 @@ en: engines: graphhopper_bicycle: "Bicycle (GraphHopper)" graphhopper_foot: "Foot (GraphHopper)" - mapquest_bike: "Bicycle (MapQuest)" + mapquest_bicycle: "Bicycle (MapQuest)" + mapquest_car: "Car (MapQuest)" + mapquest_foot: "Foot (MapQuest)" osrm_car: "Car (OSRM)" - cloudmade_foot: "Foot (Cloudmade)" directions: "Directions" errors: no_route: "Couldn't find a route between those two places." -- 2.43.2