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

Theo mặc định, API Tuyến đường trả về tuyến mặc định. Đây thường là tuyến nhanh nhất từ điểm gốc đến đích. Khi bạn yêu cầu 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 tuyến đường phù hợp nhất với yêu cầu của họ.

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

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

  • Bạn chỉ có thể yêu cầu tuyến thay thế cho các tuyến không có điểm tham chiếu trung gian. Yêu cầu tuyến thay thế khi tuyến chỉ định điểm tham chiếu trung gian 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 thay thế. Tuy nhiên, đôi khi không có tuyến thay thế nào nên phản hồi chỉ chứa tuyến mặc định.

  • Do phải xử lý thêm để tính toán các tuyến thay thế, nên việc yêu cầu các tuyến 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 tuyến thay thế. Ví dụ sau cho thấy cách yêu cầu các tuyến 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ủa bạn có thể sử dụng thông tin đó để chọn tuyến đường cần đ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 đường 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 thay thế, thuộc tính routeLabels chứa DEFAULT_ROUTE_ALTERNATE.

Trong ví dụ này, phản hồi chứa tuyến mặc định và 2 tuyến thay thế. Lưu ý rằng các giá trị của các thuộc tính durationdistanceMeters sẽ 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 hình nhiều đường vào câu trả lời

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

Để thêm hình nhiều đường, hãy thêm 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 này chứa hình nhiều đường cho từng tuyến đường:

{
  "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"
      ]
    }
   ]
}