Éviter les demi-tours aux points de retrait et de livraison
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Par défaut, les véhicules peuvent arriver à un lieu de prise en charge ou de livraison depuis n'importe quelle direction, puis repartir dans n'importe quelle direction. Dans certains cas, cela oblige le véhicule à faire demi-tour au niveau du lieu de la visite, ce qui peut être difficile, voire impossible, en raison de la taille du véhicule, des panneaux de signalisation sur place ou des conditions de circulation habituelles.
Pour empêcher les véhicules de changer de direction entre l'arrivée et le départ pour un lieu de prise en charge ou de livraison donné, vous pouvez définir avoid_u_turns sur "true" pour ce lieu. Avec ce paramètre, le véhicule arrive et repart de l'emplacement avec le même cap, ce qui évite le demi-tour. Sur les routes à double sens, le solveur prendra en compte les deux sens de circulation et en choisira un dans le cadre de l'optimisation de l'itinéraire.
Vous pouvez également définir side_of_road sur "true" pour obtenir un itinéraire où le véhicule arrive et repart du côté de la route le plus proche du point de cheminement. Dans ce cas, le véhicule ne change pas non plus de cap entre l'arrivée et le départ. Il est possible de définir side_of_road et avoid_u_turns sur "true" pour obtenir le même résultat. Pour en savoir plus, consultez Interaction avec d'autres fonctionnalités.
En pratique, avoid_u_turns doit être utilisé lorsqu'il est possible de traverser la route pour atteindre le point de repère. Utilisez side_of_road lorsque la traversée est déconseillée ou impossible.
Exemple : Envoyer une requête OptimizeTours avec avoid_u_turns
Les requêtes OptimizeTours peuvent être effectuées à l'aide de REST ou de gRPC.
Avant d'envoyer une requête, remplacez les paramètres suivants par des valeurs adaptées à votre environnement :
Une fois la demande traitée, vous recevrez un message de réponse.
Interaction avec d'autres fonctionnalités
avoid_u_turns peut être utilisé avec side_of_road = true. Dans ce cas, les demi-tours sont évités, mais le solveur sélectionne un itinéraire où le véhicule se trouve du même côté de la route que le point de repère, comme si vous aviez défini side_of_road = true seul.
Lorsque avoid_u_turns = true pour une demande de visite donnée, le champ injected_solution_location_token est défini dans le ShipmentRoute.Visit de la réponse correspondante. La signification précise de sa valeur est un détail d'implémentation, mais elle encode les informations sur le côté de la route choisi par le solveur.
Lorsque vous utilisez un ShipmentRoute.Visit dans la requête d'entrée, si ce ShipmentRoute.Visit correspond à un VisitRequest dans lequel avoid_u_turns = true, alors ShipmentRoute.Visit doit contenir un injected_solution_location_token précédemment renvoyé par le solveur.
Limites
L'évitement des demi-tours est une fonctionnalité optimale. Dans certains cas, l'itinéraire peut toujours contenir des demi-tours :
avoid_u_turns ne fonctionne qu'avec les modes de déplacement compatibles avec side_of_road.
Plus précisément, il n'est pas compatible avec le mode de déplacement WALKING.
avoid_u_turns ne peut pas être utilisé pour les collectes et les livraisons dont les lieux d'arrivée et de départ sont différents.
Lorsqu'un retrait ou une livraison se trouve sur une route en impasse, il est nécessaire de faire demi-tour pour quitter la route.
L'objectif de cette fonctionnalité est d'éviter les demi-tours aux lieux de prise en charge et de livraison.
Les demi-tours entre les points de cheminement ne sont pas évités.
Les virages très serrés vers une autre route ne sont pas considérés comme des demi-tours et ne seront généralement pas évités.
D'autres limites s'appliquent pendant le développement de cette fonctionnalité. Nous prévoyons de les lever à mesure que la fonctionnalité évoluera.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[[["\u003cp\u003eVehicles typically arrive and depart from locations in any direction, potentially requiring u-turns.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eavoid_u_turns\u003c/code\u003e setting prevents vehicles from changing direction at a pickup or delivery location, ensuring arrival and departure with the same heading.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eside_of_road\u003c/code\u003e setting ensures vehicles arrive and leave on the side of the road closest to the waypoint, also avoiding changes in heading.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eavoid_u_turns\u003c/code\u003e and \u003ccode\u003eside_of_road\u003c/code\u003e can be used together to prevent u-turns while also maintaining the vehicle's position on the correct side of the road.\u003c/p\u003e\n"],["\u003cp\u003eU-turn avoidance is not supported in all travel modes, such as \u003ccode\u003eWALKING\u003c/code\u003e mode, and is also not supported when the arrival and departure locations for a delivery or pickup differ.\u003c/p\u003e\n"]]],[],null,["\u003cbr /\u003e\n\n| This product or feature is Experimental (pre-GA). Pre-GA products and features might have limited support, and changes to pre-GA products and features might not be compatible with other pre-GA versions. Pre-GA Offerings are covered by the [Google\n| Maps Platform Service Specific Terms](https://cloud.google.com/maps-platform/terms/maps-service-terms). For more information, see the [launch stage descriptions](/maps/launch-stages).\n\n\u003cbr /\u003e\n\nBy default, vehicles can arrive at a pickup or a delivery location from any\ndirection, and then leave in any direction. In some cases, this forces\nthe vehicle to make a u-turn at the visit location, which may be difficult or\nimpossible because of vehicle size, traffic signs at the location, or usual\ntraffic conditions.\n\nTo prevent vehicles from changing direction between the arrival and departure\nfor a given pickup or delivery location, you can set [`avoid_u_turns`](/maps/tt/route-optimization/experimental/u-turn-avoidance/reference/rest/v1/ShipmentModel#VisitRequest.FIELDS.avoid_u_turns) to\ntrue for this location. Under this setting, the vehicle will arrive and leave\nthe location with the same heading, thus avoiding the u-turn. On two-way roads\nthe solver will consider both directions and choose one as part of the route\noptimization.\n\nYou can also set [`side_of_road`](/maps/tt/route-optimization/experimental/u-turn-avoidance/reference/rest/v1/projects/optimizeTours#google.maps.routeoptimization.v1.Waypoint.FIELDS.bool.google.maps.routeoptimization.v1.Waypoint.side_of_road) to true to obtain a route where the vehicle\narrives and leaves on the side of the road closest to the waypoint. In this\ncase, the vehicle also does not change heading between the arrival and the\ndeparture. It is possible to set both `side_of_road` and `avoid_u_turns` to true\nto achieve the same result. For details, see [Interaction with other\nfeatures](#interaction_with_other_features).\n\nIn practice, `avoid_u_turns` should be used when it is safe to cross the road to\nget to the waypoint. Use `side_of_road` when crossing is discouraged or not\npossible.\n\nExample: Make an `OptimizeTours` request with `avoid_u_turns`\n\n`OptimizeTours` requests can be made using either [REST](/maps/tt/route-optimization/experimental/u-turn-avoidance/reference/rest/v1/projects/optimizeTours) or [gRPC](/maps/tt/route-optimization/experimental/u-turn-avoidance/reference/rpc/google.maps.routeoptimization.v1#routeoptimization).\n\nBefore making a request, replace the following parameters with values\nappropriate for your environment:\n\n- Ensure you have [Application Default Credentials](https://cloud.google.com/docs/authentication/provide-credentials-adc) configured as described in [Use OAuth](/maps/documentation/route-optimization/oauth-token).\n- Set \u003cvar label=\"project_number\" translate=\"no\"\u003ePROJECT_NUMBER_OR_ID\u003c/var\u003e to your Cloud\n project number or ID.\n\n The following command sends an `OptimizeTours` request to the Route\n Optimization API and receives a response synchronously. \n\n ```scdoc\n curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer $(gcloud auth application-default print-access-token)\" \\\n --data @- \u003c\u003cEOM\n {\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.42506261000996,\n \"longitude\": -122.09535511930135\n },\n \"avoidUTurns\": true\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.42421503206021,\n \"longitude\": -122.09526063135228\n },\n \"avoidUTurns\": true\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"travelMode\": \"DRIVING\",\n \"costPerKilometer\": 1.0\n }\n ],\n }\n }\n EOM\n ```\n | **Note:** this example uses the `--data @-` to read a request from standard input. Use `--data @`\u003cvar label=\"curl_filename\" translate=\"no\"\u003eFilename\u003c/var\u003e to read from a file.\n\nOnce the request completes, you'll receive a response message.\n\nInteraction with other features\n\n- `avoid_u_turns` can be used together with `side_of_road = true`. In this case, u-turns are avoided, but the solver selects a route that the vehicle is on the same side of the road as the waypoint, similar to setting `side_of_road = true` alone.\n- When `avoid_u_turns = true` for a certain visit request, then the `ShipmentRoute.Visit` in the corresponding response has the field `injected_solution_location_token` set. The precise meaning of its value is an implementation detail, but it encodes the information about the side of the road picked by the solver.\n- When you use a `ShipmentRoute.Visit` as part of the input request, if that `ShipmentRoute.Visit` corresponds to a `VisitRequest` in which `avoid_u_turns = true`, then `ShipmentRoute.Visit` must contain an `injected_solution_location_token` previously returned by the solver.\n\nLimitations\n\nU-turn avoidance is best effort. In certain situations, the route may still\ncontain u-turns:\n\n- `avoid_u_turns` works only with travel modes that support [`side_of_road`](/maps/tt/route-optimization/experimental/u-turn-avoidance/reference/rest/v1/projects/optimizeTours#google.maps.routeoptimization.v1.Waypoint.FIELDS.bool.google.maps.routeoptimization.v1.Waypoint.side_of_road). Specifically, it is not supported for the `WALKING` travel mode.\n- `avoid_u_turns` can't be used for pickups and deliveries where the arrival and departure are not the same.\n- When a pickup or a delivery is on a dead-end road, it is necessary to make a u-turn to leave the road.\n- The aim of this feature is avoiding u-turns at pickup and delivery locations. U-turns between waypoints are not avoided.\n- Very sharp turns to a different road are not considered u-turns, and they will generally not be avoided.\n\nThere are additional limitations while this feature is under development. We\nexpect them to be lifted as the feature evolves.\n\n- `avoid_u_turns` can't be used together with [`interpret_injected_solutions_using_labels`](/maps/tt/route-optimization/experimental/u-turn-avoidance/reference/rest/v1/projects/optimizeTours#google.maps.routeoptimization.v1.OptimizeToursRequest.FIELDS.bool.google.maps.routeoptimization.v1.OptimizeToursRequest.interpret_injected_solutions_using_labels)."]]