API Tuyến đường hiện đang ở chế độ Xem trước (trước GA). Các sản phẩm và tính năng trước giai đoạn phát hành rộng rãi có thể không được hỗ trợ hạn chế. Đồng thời, các thay đổi đối với sản phẩm và tính năng trước giai đoạn phát hành rộng rãi có thể không tương thích với các phiên bản trước giai đoạn phát hành rộng rãi khác. Các Sản phẩm trước giai đoạn phát hành rộng rãi chịu sự điều chỉnh của Điều khoản dành riêng cho dịch vụ nền tảng Google Maps. Để biết thêm thông tin, hãy xem nội dung mô tả giai đoạn ra mắt.

Yêu cầu thông tin giao thông trên nhiều đường kẻ

API tuyến đường cho phép bạn yêu cầu thông tin về điều kiện giao thông dọc theo đa tuyến nhận biết lưu lượng truy cập. Các điều kiện lưu lượng truy cập được thể hiện theo danh mục tốc độ (NORMAL, SLOW, TRAFFIC_JAM) áp dụng trên khoảng thời gian nhất định của polyline phản hồi. Khoảng thời gian được xác định bởi các chỉ mục của các điểm nhiều đường bắt đầu (bao gồm) và kết thúc (loại trừ).

Để biết thêm về hình nhiều đường, hãy xem:

Trả về hình nhiều đường

Một đường polyline được biểu thị bằng đối tượng Polyline (REST) hoặc Polyline (gRPC). Bạn có thể trả về một hình nhiều đường trong phản hồi ở cả tuyến đường và chân.

Kiểm soát đa giác cần trả về bằng cách sử dụng mặt hàng trường phản hồi:

  • Ở cấp độ tuyến đường, hãy trả về một hình nhiều đường trong phản hồi bằng cách đưa routes.polyline vào mặt nạ trường phản hồi.

  • Ở phần chân, trả về một đường kẻ trong phản hồi cho từng chặng của tuyến đường bằng cách thêm routes.legs.polyline.

Ví dụ: để trả về đường đa tuyến cho toàn bộ tuyến đường và từng chặng:

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

Định cấu hình loại hình nhiều đường

Phương thức computeRoutes (REST) và phương thức ComputeRoutes (gRPC) hỗ trợ tuỳ chọn yêu cầu polylineEncoding để kiểm soát loại polyline.

polylineEncoding chỉ định cách mã hoá polyline dưới dạng ENCODED_POLYLINE (mặc định), nghĩa là sử dụng thuật toán mã hoá polyline, hoặc GEO_JSON_LINESTRING, nghĩa là sử dụng định dạng GeoJSON LineString.

Ví dụ: trong nội dung yêu cầu:

{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "polylineQuality": "HIGH_QUALITY",
  "polylineEncoding": "ENCODED_POLYLINE", 
  "departureTime": "2019-10-15T15:01:23.045123456Z",
  ...
}

Thông tin giao thông trả về

Bạn có thể định cấu hình phản hồi để bao gồm thông tin về trạm thu phí và các hạn chế khu vực giao thông có thể xảy ra:

Cả RouteTravelAdvisory và RouteLegTravelAdvisory đều có một trường mảng cho thông tin về tốc độ giao thông và mô tả mật độ giao thông một cách chi tiết. Mỗi đối tượng trong mảng được biểu thị bằng một đối tượng SpeedReadingInterval (REST) hoặc SpeedReadingInterval (gRPC).

Đối tượng SpeedReadingInterval bao gồm tốc độ đọc cho khoảng thời gian tuyến đường. Mảng toàn bộ các đối tượng bao phủ toàn bộ nhiều đường của tuyến đường mà không chồng chéo nhau. Điểm bắt đầu của một khoảng thời gian chỉ định giống với điểm kết thúc của khoảng thời gian trước đó.

Để định cấu hình phương thức trả về thông tin lưu lượng truy cập với polyline, hãy sử dụng mặt nạ trường của phản hồi:

  • Ở cấp độ tuyến đường, hãy trả về tất cả thông tin giao thông trong phản hồi bằng cách đưa routes.travelAdvisory vào mặt nạ trường phản hồi. Để chỉ trả về SpeedReadingInterval, hãy chỉ định routes.travelAdvisory.speedReadingIntervals

  • Ở phần chân, trả về thông tin giao thông trong phản hồi cho từng chặng của tuyến đường bằng cách bao gồm routes.legs.travelAdvisory.speedReadingIntervals hoặc routes.legs.steps.travelAdvisory.speedReadingIntervals.

Khi trả về thông tin lưu lượng truy cập, bạn thường sẽ trả về cả thông tin nhiều đường và thông tin giao thông trong phản hồi:

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

Ví dụ về phản hồi cho một đường nhiều vòng nhận biết lưu lượng truy cập

Trong nội dung phản hồi, lưu lượng truy cập cấp tuyến có sẵn trong routes.travelAdvisory.speedReadingIntervals. Lưu lượng truy cập ở cấp chân có sẵn trong routes.legs.travelAdvisory.speedReadingIntervals.

Mỗi khoảng thời gian sẽ được mô tả trong startPolylinePointIndex, endPolylinePointIndex và danh mục tốc độ tương ứng. 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.

Các giá trị startPolylinePointIndexendPolylinePointIndex không phải lúc nào cũng liên tiếp. Ví dụ:

{
  "startPolylinePointIndex": 2,
  "endPolylinePointIndex": 4,
  "speed": "NORMAL"
}

Trong trường hợp này, điều kiện lưu lượng truy cập giống nhau từ chỉ mục 2 đến chỉ mục 4.

Dưới đây là phản hồi đầy đủ:

{
  "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ị nhiều đường nhận biết lưu lượng truy cập với SDK bản đồ

Bạn nên hiển thị các đường đa tuyến nhận biết lưu lượng truy cập 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 tính năng tô màu, nét vẽ và hoa văn tuỳ chỉnh dọc theo các đường trải dài đa tuyến. Để biết thêm thông tin chi tiết về cách sử dụng tính năng nhiều dòng, hãy xem nội dung Các tính năng của Polyline cho AndroidCác tính năng của Polyline cho iOS.

Ví dụ về quá trình kết xuất Polyline

Người dùng SDK Maps có cơ hội xác định logic ánh xạ tùy chỉnh giữa các danh mục tốc độ và giản đồ hiển thị nhiều đường. Ví dụ: Người dùng có thể quyết định hiển thị tốc độ "NORMAL" dưới dạng một đường màu xanh dương dày 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 hình nhiều đường màu xanh dương dày đặc các phân đ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 (cho Android) và Tuỳ chỉnh Polyline (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