Yêu cầu thông tin giao thông trên hình nhiều đường

Routes Preferred API (API Tuyến đường ưu tiên) cho phép yêu cầu thông tin về tình trạng giao thông dọc theo đường nhiều đoạn thẳng. Tình trạng giao thông được thể hiện bằng các danh mục tốc độ (NORMAL, SLOW, TRAFFIC_JAM) áp dụng cho một khoảng thời gian nhất định của đường nhiều đoạn thẳng trong phản hồi. Các khoảng thời gian được xác định bằng chỉ mục của các điểm bắt đầu (bao gồm) và điểm kết thúc (không bao gồm) của đường nhiều đoạn thẳng.

Yêu cầu mẫu

Đường nhiều đoạn thẳng có thông tin về tình trạng giao thông có ở cả cấp tuyến đường và cấp chặng. Ở cấp tuyến đường, thông tin về tốc độ giao thông được cung cấp dưới dạng SpeedReadingIntervals trong trường phản hồi RouteTravelAdvisory. Để nhận thông tin về tình trạng giao thông cùng với hình nhiều đường của tuyến đường, hãy đưa cả polylinespeedReadingIntervals vào mặt nạ trường phản hồi.

Nếu mặt nạ trường chứa routes.legs.travelAdvisory.speedReadingIntervals, thì phản hồi sẽ chứa dữ liệu về tình trạng giao thông ở cấp chặng trong RouteLegTravelAdvisory.

X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline,routes.travelAdvisory.speedReadingIntervals,routes.legs.polyline.encodedPolyline,routes.legs.travelAdvisory.speedReadingIntervals

Hãy truy cập vào phần "Chọn các trường để trả về" để biết thêm thông tin chi tiết về cách chỉ định fieldmask phản hồi.

Phản hồi mẫu

Miễn là bạn yêu cầu speedReadingIntervals thông qua mặt nạ trường, thì các trường này sẽ được điền trong routes.travelAdvisory.speedReadingIntervals. Thông tin về tình trạng giao thông ở cấp chặng có trong routes.legs.travelAdvisory.speedReadingIntervals. Mỗi khoảng thời gian được mô tả bằng startPolylinePointIndex, endPolylinePointIndex và danh mục tốc độ tương ứng. Xin lưu ý rằng việc thiếu chỉ mục bắt đầu trong khoảng thời gian tương ứng với chỉ mục 0 theo các phương pháp proto3.

{
  "routes": [
    {
      "legs": {
        "polyline": {
          "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD"
        },
        "travelAdvisory": {
          "speedReadingIntervals": [
            {
              "endPolylinePointIndex": 1,
              "speed": "NORMAL"
            },
            {
              "startPolylinePointIndex": 1,
              "endPolylinePointIndex": 2,
              "speed": "SLOW"
            },
            {
              "startPolylinePointIndex": 2,
              "endPolylinePointIndex": 4,
              "speed": "NORMAL"
            }
          ] 
        }
      },
      "polyline": {
        "encodedPolyline": "}boeF~zbjVAg@EmB`GWHlD"
      },
      "travelAdvisory": {
        "speedReadingIntervals": [
          {
            "endPolylinePointIndex": 1,
            "speed": "NORMAL"
          },
          {
            "startPolylinePointIndex": 1,
            "endPolylinePointIndex": 2,
            "speed": "SLOW"
          },
          {
            "startPolylinePointIndex": 2,
            "endPolylinePointIndex": 4,
            "speed": "NORMAL"
          }
        ] 
      }
    }
  ]
}

Kết xuất đường nhiều đoạn thẳng có thông tin về tình trạng giao thông bằng Maps SDK

Bạn nên hiển thị hình nhiều đường có thông tin về tình trạng giao thông trên bản đồ bằng nhiều tính năng do SDK Google Maps cung cấp, bao gồm cả màu sắc tuỳ chỉnh, nét vẽ và hoa văn dọc theo các đoạn hình nhiều đường. Để biết thêm thông tin chi tiết về cách sử dụng đường nhiều đoạn thẳng, hãy xem bài viết Các tính năng của đường nhiều đoạn thẳng cho AndroidCác tính năng của đường nhiều đoạn thẳng cho iOS.

Ví dụ về kết xuất đường nhiều đoạn thẳng

Người dùng Maps SDK có cơ hội xác định logic liên kết tuỳ chỉnh giữa các danh mục tốc độ và lược đồ kết xuất đường nhiều đoạn thẳng. Ví dụ: một người có thể quyết định hiển thị tốc độ "NORMAL" dưới dạng một đường màu xanh dương đậm trên bản đồ, trong khi tốc độ "SLOW" có thể được hiển thị dưới dạng một đường màu cam đậm, v.v.

Các đoạn mã sau đây thêm một đường nhiều đoạn thẳng màu xanh dương đậm có các đoạn trắc địa từ Melbourne đến Perth. Để biết thêm thông tin, hãy xem bài viết Tuỳ chỉnh giao diện (dành cho Android) và Tuỳ chỉnh đường nhiều đoạn thẳng (dành cho iOS).

Android

Java

Polyline line = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

Kotlin

val line: Polyline = map.addPolyline(
  PolylineOptions()
    .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
    .width(25f)
    .color(Color.BLUE)
    .geodesic(true)
)

iOS

Objective-C

GMSMutablePath *path = [GMSMutablePath path];
[path addLatitude:-37.81319 longitude:144.96298];
[path addLatitude:-31.95285 longitude:115.85734];
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 10.f;
polyline.strokeColor = .blue;
polyline.geodesic = YES;
polyline.map = mapView;

Swift

let path = GMSMutablePath()
path.addLatitude(-37.81319, longitude: 144.96298)
path.addLatitude(-31.95285, longitude: 115.85734)
let polyline = GMSPolyline(path: path)
polyline.strokeWidth = 10.0
polyline.geodesic = true
polyline.map = mapView