X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/7d32e50e0a6e491a38f55c6748f9ea0bb19038a1..24eaeb2653b231f52822c37433a258e08eae9eea:/app/assets/javascripts/index/directions/osrm.js diff --git a/app/assets/javascripts/index/directions/osrm.js b/app/assets/javascripts/index/directions/osrm.js index 05cb32f20..ab3bcff36 100644 --- a/app/assets/javascripts/index/directions/osrm.js +++ b/app/assets/javascripts/index/directions/osrm.js @@ -12,43 +12,49 @@ function OSRMEngine() { getRoute: function (points, callback) { var TURN_INSTRUCTIONS = [ "", - I18n.t('javascripts.directions.instructions.continue_on'), // 1 - I18n.t('javascripts.directions.instructions.slight_right'), // 2 - I18n.t('javascripts.directions.instructions.turn_right'), // 3 - I18n.t('javascripts.directions.instructions.sharp_right'), // 4 - I18n.t('javascripts.directions.instructions.uturn'), // 5 - I18n.t('javascripts.directions.instructions.sharp_left'), // 6 - I18n.t('javascripts.directions.instructions.turn_left'), // 7 - I18n.t('javascripts.directions.instructions.slight_left'), // 8 - I18n.t('javascripts.directions.instructions.via_point'), // 9 - I18n.t('javascripts.directions.instructions.follow'), // 10 - I18n.t('javascripts.directions.instructions.roundabout'), // 11 - I18n.t('javascripts.directions.instructions.leave_roundabout'), // 12 - I18n.t('javascripts.directions.instructions.stay_roundabout'), // 13 - I18n.t('javascripts.directions.instructions.start'), // 14 - I18n.t('javascripts.directions.instructions.destination'), // 15 - I18n.t('javascripts.directions.instructions.against_oneway'), // 16 - I18n.t('javascripts.directions.instructions.end_oneway') // 17 + 'javascripts.directions.instructions.continue', // 1 + 'javascripts.directions.instructions.slight_right', // 2 + 'javascripts.directions.instructions.turn_right', // 3 + 'javascripts.directions.instructions.sharp_right', // 4 + 'javascripts.directions.instructions.uturn', // 5 + 'javascripts.directions.instructions.sharp_left', // 6 + 'javascripts.directions.instructions.turn_left', // 7 + 'javascripts.directions.instructions.slight_left', // 8 + 'javascripts.directions.instructions.via_point', // 9 + 'javascripts.directions.instructions.follow', // 10 + 'javascripts.directions.instructions.roundabout', // 11 + 'javascripts.directions.instructions.leave_roundabout', // 12 + 'javascripts.directions.instructions.stay_roundabout', // 13 + 'javascripts.directions.instructions.start', // 14 + 'javascripts.directions.instructions.destination', // 15 + 'javascripts.directions.instructions.against_oneway', // 16 + 'javascripts.directions.instructions.end_oneway' // 17 ]; - var url = document.location.protocol + "//router.project-osrm.org/viaroute?z=14&output=json&instructions=true"; + var params = [ + { name: "z", value: "14" }, + { name: "output", value: "json" }, + { name: "instructions", value: true } + ]; for (var i = 0; i < points.length; i++) { - url += "&loc=" + points[i].lat + ',' + points[i].lng; + params.push({ name: "loc", value: points[i].lat + "," + points[i].lng }); + if (hintData && previousPoints && previousPoints[i].equals(points[i])) { - url += "&hint=" + hintData.locations[i]; + params.push({ name: "hint", value: hintData.locations[i] }); } } if (hintData && hintData.checksum) { - url += "&checksum=" + hintData.checksum; + params.push({ name: "checksum", value: hintData.checksum }); } - $.ajax({ - url: url, - dataType: 'json', + return $.ajax({ + url: document.location.protocol + "//router.project-osrm.org/viaroute", + data: params, + dataType: "json", success: function (data) { - if (data.status == 207) + if (data.status === 207) return callback(true); previousPoints = points; @@ -64,12 +70,11 @@ function OSRMEngine() { var linesegend; var instCodes = s[0].split('-'); var instText = "" + (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'); + var name = s[1] ? "" + s[1] + "" : I18n.t('javascripts.directions.instructions.unnamed'); + if (instCodes[0] === "11" && instCodes[1]) { + instText += I18n.t(TURN_INSTRUCTIONS[instCodes[0]] + '_with_exit', { exit: instCodes[1], name: name } ); + } else { + instText += I18n.t(TURN_INSTRUCTIONS[instCodes[0]] + '_without_exit', { name: name }); } if ((i + 1) < data.route_instructions.length) { linesegend = data.route_instructions[i + 1][3] + 1; @@ -91,4 +96,4 @@ function OSRMEngine() { }; } -OSM.Directions.addEngine(OSRMEngine(), true); +OSM.Directions.addEngine(new OSRMEngine(), true);