Routes Preferred API cung cấp khả năng yêu cầu thông tin về tình trạng giao thông dọc theo đường đa tuyến. Điều kiện 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 đa tuyến phản hồi. Các khoảng được xác định bằng chỉ mục của các điểm bắt đầu (bao gồm) và kết thúc (không bao gồm) của đường nhiều đoạn.
Ví dụ về yêu cầu
Đường nhiều đoạn có thông tin giao thông có sẵn cho cả cấp tuyến đường và cấp đoạn đườ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 đường đa tuyến 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 giao thông ở cấp đoạn đườ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 cần trả về" để biết thêm thông tin về cách chỉ định fieldmask phản hồi.
Ví dụ về phản hồi
Miễn là bạn yêu cầu speedReadingIntervals
thông qua mặt nạ trường, các trường này sẽ được điền sẵn trong routes.travelAdvisory.speedReadingIntervals
.
Thông tin về lưu lượng truy cập ở cấp đoạn đường có từ ngày 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 có tính năng nhận biết lưu lượng truy cập bằng Maps SDK
Bạn nên hiển thị các đường nhiều đoạn có thông tin về 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 cả màu sắc, nét vẽ và mẫu tuỳ chỉnh dọc theo các đoạn đường nhiều đoạn. Để biết thêm thông tin về cách sử dụng nhiều đường, hãy xem Các tính năng của nhiều đường cho Android và Các tính năng của nhiều đường cho iOS.
Ví dụ về kết xuất nhiều đường
Người dùng Maps SDK có thể xác định một logic liên kết tuỳ chỉnh giữa các danh mục tốc độ và các giản đồ kết xuất đường nhiều đoạn. 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 dày 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 dày, v.v.
Các đoạn mã sau đây sẽ thêm một đường nhiều đoạn màu xanh dương đậm có các đoạn đường 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 (đối với Android) và Tuỳ chỉnh Polyline (đối với 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