Tránh quay đầu xe tại vị trí đến lấy hàng và giao hàng
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Theo mặc định, xe có thể đến một địa điểm nhận hàng hoặc giao hàng từ bất kỳ hướng nào, rồi rời đi theo hướng bất kỳ. Trong một số trường hợp, điều này buộc xe phải quay đầu tại vị trí ghé thăm, điều này có thể khó khăn hoặc không thể thực hiện được do kích thước xe, biển báo giao thông tại vị trí hoặc điều kiện giao thông thông thường.
Để ngăn xe thay đổi hướng giữa thời gian đến và thời gian khởi hành cho một vị trí nhận hàng hoặc giao hàng nhất định, bạn có thể đặt avoid_u_turns thành true cho vị trí này. Theo chế độ cài đặt này, xe sẽ đến và rời khỏi vị trí theo cùng một hướng, do đó tránh được việc quay đầu. Trên đường hai chiều, trình giải quyết sẽ xem xét cả hai hướng và chọn một hướng làm một phần của quá trình tối ưu hoá tuyến đường.
Bạn cũng có thể đặt side_of_road thành true để nhận được một tuyến đường mà xe đến và rời đi ở bên đường gần với điểm tham chiếu nhất. Trong trường hợp này, xe cũng không thay đổi hướng đi giữa điểm đến và điểm khởi hành. Bạn có thể đặt cả side_of_road và avoid_u_turns thành true để đạt được kết quả tương tự. Để biết thông tin chi tiết, hãy xem phần Tương tác với các tính năng khác.
Trên thực tế, bạn nên sử dụng avoid_u_turns khi có thể băng qua đường một cách an toàn để đến điểm tham chiếu. Sử dụng side_of_road khi không nên hoặc không thể băng qua đường.
Ví dụ: Đưa ra yêu cầu OptimizeTours bằng avoid_u_turns
Bạn có thể đưa ra yêu cầu OptimizeTours bằng REST hoặc gRPC.
Trước khi đưa ra yêu cầu, hãy thay thế các tham số sau bằng các giá trị phù hợp với môi trường của bạn:
Sau khi yêu cầu hoàn tất, bạn sẽ nhận được một thông báo phản hồi.
Tương tác với các tính năng khác
Bạn có thể sử dụng avoid_u_turns cùng với side_of_road = true. Trong trường hợp này, hệ thống sẽ tránh các đoạn đường quay đầu, nhưng trình giải quyết sẽ chọn một tuyến đường mà xe đang ở cùng phía đường với điểm tham chiếu, tương tự như việc chỉ đặt side_of_road = true.
Khi avoid_u_turns = true cho một yêu cầu truy cập nhất định, thì ShipmentRoute.Visit trong phản hồi tương ứng sẽ có trường injected_solution_location_token được đặt. Ý nghĩa chính xác của giá trị này là một chi tiết triển khai, nhưng nó mã hoá thông tin về phía đường mà trình giải quyết đã chọn.
Khi bạn sử dụng ShipmentRoute.Visit trong yêu cầu đầu vào, nếu ShipmentRoute.Visit đó tương ứng với VisitRequest trong đó avoid_u_turns = true, thì ShipmentRoute.Visit phải chứa injected_solution_location_token mà trước đó trình giải đã trả về.
Các điểm hạn chế
Tính năng tránh quay đầu xe hoạt động trong phạm vi có thể. Trong một số trường hợp, tuyến đường vẫn có thể chứa các đoạn quay đầu:
avoid_u_turns chỉ hoạt động với những chế độ di chuyển hỗ trợ side_of_road.
Cụ thể, chế độ di chuyển WALKING không hỗ trợ thuộc tính này.
Bạn không thể dùng avoid_u_turns cho việc đến lấy và giao hàng khi địa điểm đến và đi không giống nhau.
Khi đến lấy hàng hoặc giao hàng trên đường cụt, bạn cần phải quay đầu xe để rời khỏi đường đó.
Mục đích của tính năng này là tránh quay đầu xe tại các vị trí nhận và giao hàng.
Không tránh các đoạn đường quay đầu giữa các điểm tham chiếu.
Những đoạn rẽ rất gấp sang một đường khác không được coi là đường vòng và thường sẽ không bị tránh.
Tính năng này vẫn đang trong quá trình phát triển nên có thêm một số hạn chế. Chúng tôi hy vọng những hạn chế này sẽ được gỡ bỏ khi tính năng này phát triển.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-29 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)."]]