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

Routes Preferred API cho phép bạn yêu cầu thông tin về tình trạng giao thông dọc theo hình nhiều đường. Tình trạng giao thông được thể hiện dưới dạ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 hình nhiều đường phản hồi. Các khoảng thời gian được xác định bằng chỉ mục của điểm bắt đầu (bao gồm) và điểm kết thúc (không bao gồm) của hình nhiều đường.

Yêu cầu mẫu

Đường đa tuyến nhận biết tình hình giao thông có sẵn cho 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 giao thông cùng với hình nhiều đường của tuyến đường, hãy thêm cả polyline và speedReadingIntervals 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 lưu lượng truy cập ở 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 trường để trả về" để biết thêm thông tin chi tiết về cách chỉ định mặt nạ trường phản hồi.

Ví dụ về phản hồi

Miễn là speedReadingIntervals được yêu cầu thông qua mặt nạ trường, thì các trường này sẽ được điền sẵn trong routes.travelAdvisory.speedReadingIntervals. Lưu lượng truy cập ở 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 của 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"
          }
        ] 
      }
    }
  ]
}

Hiển thị hình nhiều đường nhận biết tình hình giao thông bằng SDK Maps

Bạn nên hiển thị các hình nhiều đường có thông tin về tình hình giao thông trên bản đồ bằng cách sử dụ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à mẫu tuỳ chỉnh dọc theo các đoạn hình nhiều đường. Để biết thêm thông tin về cách sử dụng hình nhiều đường, hãy xem bài viết Tính năng hình nhiều đường cho Android và Tính năng hình nhiều đường cho iOS.

Ví dụ về cách kết xuất hình nhiều đường

Người dùng SDK Maps có thể xác định logic ánh xạ tuỳ chỉnh giữa các danh mục tốc độ và giản đồ kết xuất hình nhiều đường. Ví dụ: bạn có thể quyết định hiển thị tốc độ "BÌNH THƯỜNG" dưới dạng một đường màu xanh dương đậm trên bản đồ, trong khi tốc độ "CHẬM" có thể 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 hình nhiều đườ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 phần Tuỳ chỉnh giao diện (dành cho Android) và Tuỳ chỉnh hình nhiều đườ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