L'évitement des demi-tours est une fonctionnalité d'optimisation des itinéraires qui empêche les véhicules de faire demi-tour au niveau du lieu de retrait ou de livraison spécifique d'une visite. En définissant l'évitement des demi-tours, vous spécifiez que le véhicule doit être orienté dans la même direction lorsqu'il arrive et lorsqu'il quitte un lieu de visite.
Le système d'évitement des demi-tours fonctionne de la manière suivante :
- Vous définissez la propriété d'évitement des demi-tours pour une visite spécifique.
- L'API tient compte des deux sens de circulation sur les routes à double sens et choisit le chemin le plus optimal.
- L'API génère un itinéraire où le véhicule arrive et repart sans faire demi-tour au lieu de la visite. Le chauffeur devra peut-être traverser la route pour atteindre ce lieu.
Cette propriété est idéale dans les situations où il est difficile ou impossible de faire demi-tour en raison de la taille du véhicule, des panneaux de signalisation ou des conditions de circulation habituelles.
Propriétés
La propriété d'évitement des demi-tours est définie dans l'objet VisitRequest.
Cet objet est utilisé dans les tableaux pickups et deliveries d'un envoi.
| Propriété | Type | Description |
|---|---|---|
avoidUTurns |
booléen | Lorsque la valeur est définie sur true, l'API empêche le véhicule de faire demi-tour à cet emplacement de visite. Le véhicule arrivera et repartira dans la même direction. |
Exemples
Cette section aborde deux types d'exemples :
- Exemples de code illustrant la structure de l'évitement des demi-tours.
- Exemple de requête incluant la fonctionnalité.
Exemples de code
L'exemple suivant montre la structure deavoidUTurns dans une prise en charge et une livraison :
"pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ]
Exemple de requête
L'exemple suivant montre une requête optimizeTours de base qui intègre l'évitement des demi-tours. Cette requête inclut les éléments suivants :
- Expédition avec un enlèvement et une livraison dans l'objet
model. - La propriété
avoidUTurnsest définie surtruepour les lieux de prise en charge et de livraison afin d'empêcher le véhicule de changer de direction à ces arrêts.
{ "model": { "shipments":[ { "pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ] } ], "vehicles":[ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ] } }
Éviter les demi-tours avec sideOfRoad
Bien que sideOfRoad soit une fonctionnalité distincte, elle est étroitement liée à l'évitement des demi-tours, car elle empêche de nombreux demi-tours en dirigeant le véhicule vers le côté de la route le plus proche de la destination. Cela oblige le véhicule à s'approcher d'un lieu de visite depuis une direction spécifique, ce qui évite d'avoir à faire demi-tour.
En pratique, vous devez éviter les demi-tours lorsqu'il est possible de traverser la route à pied pour vous rendre sur le lieu de la visite. Si la traversée de la route est déconseillée ou impossible, envisagez de définir sideOfRoad sur true.
La propriété sideOfRoad est définie dans un objet Waypoint.
Interaction avec d'autres fonctionnalités
L'évitement des demi-tours interagit avec d'autres fonctionnalités de navigation de la manière suivante :
- Bas-côté : si vous définissez
avoidUTurnsetsideOfRoadsurtrue, vous augmentez légèrement les chances d'éviter un demi-tour tout en dirigeant le véhicule vers le bas-côté le plus proche du lieu de la visite. Toutefois, cela introduit des complexités supplémentaires liées aux restrictions d'évitement des demi-tours. Pour la plupart des lieux de visite, il suffit de définir une seule de ces propriétés pour éviter les demi-tours. - Solutions injectées : lorsque vous utilisez l'évitement d'un demi-tour, la réponse de l'API inclut un
injectedSolutionLocationTokendans leShipmentRoute.Visitgénéré pour enregistrer le côté de la route sélectionné. Si vous réutilisez cette visite comme solution injectée dans une requête ultérieure, vous devez renvoyer ce jeton à l'API.
Limites
L'évitement des demi-tours est une fonctionnalité qui est proposée au mieux. L'API peut toujours inclure des demi-tours dans un itinéraire généré dans les cas suivants :
- Le mode de déplacement est défini sur une valeur autre que
DRIVING. - Les lieux d'arrivée et de départ d'un lieu de visite spécifique sont différents. Dans ce cas, l'API renvoie une erreur.
- Le lieu de la visite se situe sur une route sans issue, nécessitant un demi-tour pour sortir.
- Le demi-tour a lieu sur l'itinéraire, et non au niveau du lieu de visite.
- La manœuvre est un virage très serré sur une autre route, que l'API ne classe pas comme un demi-tour.