From 252305f9af586b940a56e6cb89e0532dfe7e078d Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 28 Apr 2022 22:30:08 -0500 Subject: [PATCH 1/2] add option for requesting multiple routes and choosing route preference --- src/MapViewDirections.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/MapViewDirections.js b/src/MapViewDirections.js index 92f401b..8b3dbb7 100644 --- a/src/MapViewDirections.js +++ b/src/MapViewDirections.js @@ -92,6 +92,7 @@ class MapViewDirections extends Component { precision = 'low', timePrecision = 'none', channel, + preferredRoute, } = props; if (!apikey) { @@ -174,7 +175,7 @@ class MapViewDirections extends Component { } return ( - this.fetchRoute(directionsServiceBaseUrl, origin, waypoints, destination, apikey, mode, language, region, precision, timePrecisionString, channel) + this.fetchRoute(directionsServiceBaseUrl, origin, waypoints, destination, apikey, mode, language, region, precision, timePrecisionString, channel, preferredRoute) .then(result => { return result; }) @@ -184,7 +185,7 @@ class MapViewDirections extends Component { ); })).then(results => { // Combine all Directions API Request results into one - const result = results.reduce((acc, { distance, duration, coordinates, fare, legs, waypointOrder }) => { + const result = results.reduce((acc, { distance, duration, coordinates, fare, waypointOrder }) => { acc.coordinates = [ ...acc.coordinates, ...coordinates, @@ -195,7 +196,6 @@ class MapViewDirections extends Component { ...acc.fares, fare, ]; - acc.legs = legs; acc.waypointOrder = [ ...acc.waypointOrder, waypointOrder, @@ -207,7 +207,6 @@ class MapViewDirections extends Component { distance: 0, duration: 0, fares: [], - legs: [], waypointOrder: [], }); @@ -227,7 +226,7 @@ class MapViewDirections extends Component { }); } - fetchRoute(directionsServiceBaseUrl, origin, waypoints, destination, apikey, mode, language, region, precision, timePrecision, channel) { + fetchRoute(directionsServiceBaseUrl, origin, waypoints, destination, apikey, mode, language, region, precision, timePrecision, channel, preferredRoute) { // Define the URL to call. Only add default parameters to the URL if it's a string. let url = directionsServiceBaseUrl; @@ -239,6 +238,9 @@ class MapViewDirections extends Component { if(channel){ url+=`&channel=${channel}`; } + if (preferredRoute) { + url += `&alternatives=${true}` + } } return fetch(url) @@ -251,8 +253,8 @@ class MapViewDirections extends Component { } if (json.routes.length) { - - const route = json.routes[0]; + + const route = preferredRoute && preferredRoute < json.routes.length ? json.routes[preferredRoute] : json.routes[0]; return Promise.resolve({ distance: route.legs.reduce((carry, curr) => { @@ -273,7 +275,6 @@ class MapViewDirections extends Component { ), fare: route.fare, waypointOrder: route.waypoint_order, - legs: route.legs, }); } else { From c96c33dc19eabbb8cb075363d6e493b1996e83cb Mon Sep 17 00:00:00 2001 From: Admin Date: Thu, 28 Apr 2022 22:33:38 -0500 Subject: [PATCH 2/2] update to latest changes --- src/MapViewDirections.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/MapViewDirections.js b/src/MapViewDirections.js index 8b3dbb7..885a99b 100644 --- a/src/MapViewDirections.js +++ b/src/MapViewDirections.js @@ -92,7 +92,7 @@ class MapViewDirections extends Component { precision = 'low', timePrecision = 'none', channel, - preferredRoute, + preferredRoute } = props; if (!apikey) { @@ -185,7 +185,7 @@ class MapViewDirections extends Component { ); })).then(results => { // Combine all Directions API Request results into one - const result = results.reduce((acc, { distance, duration, coordinates, fare, waypointOrder }) => { + const result = results.reduce((acc, { distance, duration, coordinates, fare, legs, waypointOrder }) => { acc.coordinates = [ ...acc.coordinates, ...coordinates, @@ -196,6 +196,7 @@ class MapViewDirections extends Component { ...acc.fares, fare, ]; + acc.legs = legs; acc.waypointOrder = [ ...acc.waypointOrder, waypointOrder, @@ -207,6 +208,7 @@ class MapViewDirections extends Component { distance: 0, duration: 0, fares: [], + legs: [], waypointOrder: [], }); @@ -253,7 +255,7 @@ class MapViewDirections extends Component { } if (json.routes.length) { - + const route = preferredRoute && preferredRoute < json.routes.length ? json.routes[preferredRoute] : json.routes[0]; return Promise.resolve({ @@ -275,6 +277,7 @@ class MapViewDirections extends Component { ), fare: route.fare, waypointOrder: route.waypoint_order, + legs: route.legs, }); } else { @@ -355,4 +358,4 @@ MapViewDirections.propTypes = { channel: PropTypes.string, }; -export default MapViewDirections; +export default MapViewDirections; \ No newline at end of file