Method: computeRoutes

Trả về tuyến đường chính cùng với các tuyến đường thay thế không bắt buộc, dựa trên một tập hợp các điểm trung gian và điểm cuối.

LƯU Ý: Phương thức này yêu cầu bạn chỉ định một mặt nạ trường phản hồi trong dữ liệu đầu vào. Bạn có thể cung cấp mặt nạ trường phản hồi bằng cách sử dụng tham số URL $fields hoặc fields hoặc bằng cách sử dụng tiêu đề HTTP/gRPC X-Goog-FieldMask (xem các tham số và tiêu đề URL hiện có). Giá trị này là danh sách đường dẫn trường được phân tách bằng dấu phẩy. Xem tài liệu chi tiết về cách tạo đường dẫn trường.

Ví dụ: trong phương thức này:

  • Mặt nạ trường của tất cả các trường có sẵn (để kiểm tra thủ công): X-Goog-FieldMask: *
  • Mặt nạ trường của thời lượng, khoảng cách và đường đa tuyến ở cấp Tuyến (ví dụ về chế độ thiết lập chính thức): X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline

Google không khuyến khích việc sử dụng mặt nạ trường phản hồi ký tự đại diện (*) hoặc chỉ định mặt nạ trường ở cấp cao nhất (routes) vì:

  • Việc chỉ chọn những trường bạn cần giúp máy chủ của chúng tôi tiết kiệm được chu kỳ tính toán, cho phép chúng tôi trả về kết quả cho bạn với độ trễ thấp hơn.
  • Việc chỉ chọn những trường mà bạn cần trong công việc sản xuất sẽ đảm bảo hiệu suất độ trễ ổn định. Chúng tôi có thể thêm các trường phản hồi khác trong tương lai và các trường mới đó có thể cần thêm thời gian tính toán. Nếu chọn tất cả các trường hoặc nếu chọn tất cả các trường ở cấp cao nhất, thì bạn có thể thấy hiệu suất giảm vì mọi trường mới mà chúng tôi thêm vào sẽ tự động được đưa vào phản hồi.
  • Việc chỉ chọn các trường mà bạn cần sẽ giúp giảm kích thước phản hồi, nhờ đó tăng băng thông mạng.

Yêu cầu HTTP

POST https://routespreferred.googleapis.com/v1:computeRoutes

URL sử dụng cú pháp Chuyển mã gRPC.

Nội dung yêu cầu

Nội dung yêu cầu chứa dữ liệu có cấu trúc sau:

Biểu diễn dưới dạng JSON
{
  "origin": {
    object (Waypoint)
  },
  "destination": {
    object (Waypoint)
  },
  "intermediates": [
    {
      object (Waypoint)
    }
  ],
  "travelMode": enum (RouteTravelMode),
  "routingPreference": enum (RoutingPreference),
  "polylineQuality": enum (PolylineQuality),
  "polylineEncoding": enum (PolylineEncoding),
  "departureTime": string,
  "computeAlternativeRoutes": boolean,
  "routeModifiers": {
    object (RouteModifiers)
  },
  "languageCode": string,
  "units": enum (Units),
  "optimizeWaypointOrder": boolean
}
Trường
origin

object (Waypoint)

Bắt buộc. Điểm tham chiếu gốc.

destination

object (Waypoint)

Bắt buộc. Điểm trung gian đến.

intermediates[]

object (Waypoint)

Không bắt buộc. Một tập hợp các điểm trung gian dọc theo tuyến đường (ngoại trừ các điểm cuối), để dừng lại hoặc đi qua. Hỗ trợ tối đa 25 điểm tham chiếu trung gian.

travelMode

enum (RouteTravelMode)

Không bắt buộc. Chỉ định phương thức di chuyển.

routingPreference

enum (RoutingPreference)

Không bắt buộc. Chỉ định cách tính toán tuyến đường. Máy chủ cố gắng sử dụng lựa chọn ưu tiên định tuyến đã chọn để tính toán tuyến đường. Nếu lựa chọn ưu tiên định tuyến dẫn đến lỗi hoặc độ trễ quá dài, thì lỗi sẽ được trả về. Bạn chỉ có thể chỉ định tuỳ chọn này khi travelModeDRIVE hoặc TWO_WHEELER, nếu không yêu cầu sẽ không thành công.

polylineQuality

enum (PolylineQuality)

Không bắt buộc. Chỉ định lựa chọn ưu tiên của bạn về chất lượng của đường đa tuyến.

polylineEncoding

enum (PolylineEncoding)

Không bắt buộc. Chỉ định cách mã hoá ưu tiên cho đường đa tuyến.

departureTime

string (Timestamp format)

Không bắt buộc. Thời gian khởi hành. Nếu bạn không đặt giá trị này, thì giá trị này sẽ mặc định là thời điểm bạn đưa ra yêu cầu. Nếu bạn đặt giá trị này thành một thời điểm đã xảy ra, thì yêu cầu sẽ không thành công.

Dấu thời gian ở định dạng "Zulu" RFC3339 UTC, có độ phân giải nano giây và tối đa 9 chữ số thập phân. Ví dụ: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z".

computeAlternativeRoutes

boolean

Không bắt buộc. Chỉ định xem có tính toán các tuyến thay thế ngoài tuyến đường hay không. Không có tuyến đường thay thế nào được trả về cho các yêu cầu có điểm trung gian.

routeModifiers

object (RouteModifiers)

Không bắt buộc. Một tập hợp các điều kiện cần đáp ứng ảnh hưởng đến cách tính toán tuyến.

languageCode

string

Không bắt buộc. Mã ngôn ngữ BCP-47, chẳng hạn như "en-US" hoặc "sr-Latn". Để biết thêm thông tin, hãy xem phần Giá trị nhận dạng ngôn ngữ Unicode. Hãy xem phần Hỗ trợ ngôn ngữ để biết danh sách ngôn ngữ được hỗ trợ. Khi bạn không cung cấp giá trị này, ngôn ngữ hiển thị sẽ được suy ra từ vị trí của yêu cầu tuyến.

units

enum (Units)

Không bắt buộc. Chỉ định đơn vị đo lường cho các trường hiển thị. Bao gồm trường instruction trong NavigationInstruction. Giá trị này không ảnh hưởng đến các đơn vị đo lường được dùng cho tuyến đường, chặng đường, khoảng cách bước và thời lượng. Nếu bạn không cung cấp giá trị này, thì đơn vị hiển thị sẽ được suy luận từ vị trí của yêu cầu.

optimizeWaypointOrder

boolean

Nếu bạn đặt optimizeWaypointOrder thành true, hệ thống sẽ cố gắng sắp xếp lại các điểm trung gian đã chỉ định để giảm thiểu tổng chi phí của tuyến đường. Nếu có điểm trung gian nào đó là điểm trung gian, thì yêu cầu sẽ không thành công. Sử dụng ComputeRoutesResponse.Routes.optimized_intermediate_waypoint_index để tìm thứ tự mới. Nếu bạn không yêu cầu routes.optimized_intermediate_waypoint_index trong tiêu đề X-Goog-FieldMask, yêu cầu sẽ không thành công. Nếu bạn đặt optimizeWaypointOrder thành false, ComputeRoutesResponse.optimized_intermediate_waypoint_index sẽ trống.

Nội dung phản hồi

Nếu thành công, nội dung phản hồi sẽ chứa một phiên bản của ComputeRoutesResponse.

Phạm vi uỷ quyền

Yêu cầu phạm vi OAuth sau:

  • https://www.googleapis.com/auth/maps-platform.routespreferred

Để biết thêm thông tin, hãy xem bài viết Tổng quan về OAuth 2.0.