Yêu cầu tuyến đường thay thế

Theo mặc định, Routes API trả về tuyến mặc định, thường là tuyến nhanh nhất từ điểm xuất phát đến điểm đến. Khi bạn yêu cầu các tuyến thay thế, API sẽ trả về tối đa 3 tuyến cùng với tuyến mặc định. Sau đó, khách hàng có thể chọn một tuyến phù hợp nhất với yêu cầu của họ.

Những điều cần cân nhắc khi yêu cầu tuyến đường thay thế

Để yêu cầu các tuyến đường thay thế, hãy lưu ý những điều sau:

  • Bạn chỉ có thể yêu cầu lộ trình thay thế cho các lộ trình không có điểm trung gian. Việc yêu cầu tuyến đường thay thế khi tuyến đường chỉ định các điểm trung gian sẽ không gây ra lỗi. Tuy nhiên, không có tuyến đường thay thế nào được trả về.

  • Phản hồi chứa tối đa 3 tuyến đường thay thế. Tuy nhiên, đôi khi không có tuyến đường thay thế nào nên phản hồi chỉ chứa tuyến đường mặc định.

  • Do cần thêm quá trình xử lý để tính toán các tuyến đường thay thế, nên việc yêu cầu các tuyến đường thay thế có thể làm tăng thời gian phản hồi của API.

Ví dụ về yêu cầu tuyến đường thay thế

Đặt computeAlternativeRoutes thành true để yêu cầu các tuyến đường thay thế. Ví dụ sau đây cho thấy cách yêu cầu các tuyến đường thay thế trong yêu cầu phương thức computeRoutes (REST).

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Trong ví dụ này, bạn chỉ định một mặt nạ trường để phản hồi chỉ chứa các thuộc tính duration, distanceMeters,routeLabels cho mỗi tuyến. Sau đó, khách hàng có thể sử dụng thông tin đó để chọn tuyến đường đi. Để biết thêm thông tin, hãy xem phần Chọn thông tin cần trả về.

Ví dụ về phản hồi về tuyến đường thay thế

Trong phản hồi, hãy sử dụng thuộc tính mảng routeLabels để xác định tuyến phạm vi tiếp cận:

  • Đối với tuyến mặc định, thuộc tính routeLabels chứa DEFAULT_ROUTE.

  • Đối với mọi tuyến đường thay thế, thuộc tính routeLabels sẽ chứa DEFAULT_ROUTE_ALTERNATE.

Trong ví dụ này, phản hồi chứa tuyến mặc định và hai tuyến thay thế. Lưu ý rằng giá trị của các thuộc tính durationdistanceMeters khác nhau tuỳ theo từng tuyến:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

Thêm đường đa tuyến vào phản hồi

Để giúp người dùng dễ dàng chọn tuyến đường, hãy thêm đường đa tuyến cho từng tuyến đường vào phản hồi. Sau đó, bạn có thể hiển thị từng đa tuyến trên bản đồ.

Để thêm đường đa tuyến, hãy đưa routes.polyline vào mặt nạ trường:

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

Sau đó, phản hồi sẽ chứa đường đa tuyến cho mỗi tuyến:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}