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ả 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 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 Android và Cá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