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 đường nhanh nhất từ điểm khởi hành đến điểm đến. Khi bạn yêu cầu thay thế, thì API sẽ trả về tối đa 3 tuyến cùng với tuyến đường mặc định tuyến đường. 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ó trung gian điểm tham chiếu. Yêu cầu tuyến đường thay thế khi tuyến đường chỉ định điểm tham chiếu trung gian không gây ra lỗi. Tuy nhiên, không có lựa chọn nào khác các tuyến đường đượ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 đường 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 giá trị thay thế việc yêu cầu tuyến đường thay thế có thể làm tăng thời gian phản hồi 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ế. Chiến lược phát hành đĩa đơn ví dụ sau cho biết cách yêu cầu tuyến đường thay thế trong một computeRoutes phương thức (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. Thông tin sau đó khách hàng có thể sử dụng thông tin đó để chọn tuyến đường sẽ đi. Để biết thêm hãy xem phần Chọn thông tin cần trả lại.

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 phạm vi tiếp cận tuyến đường:

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

  • Đối với bất kỳ tuyến đường thay thế nào, 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ế tuyến đường. Lưu ý rằng các giá trị của các thuộc tính durationdistanceMeters là khác nhau cho mỗi 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 chọn tuyến đường dễ dàng hơn, hãy thêm nhiều đường cho mỗi tuyến đến 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"
      ]
    }
   ]
}