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:
- Định cấu hình chất lượng so với độ trễ để biết thông tin về cách định cấu hình chất lượng của ployline
- Định dạng thuật toán Polyline được mã hoá mô tả thuật toán để mã hoá một dòng đa hình.
- Tiện ích bộ mã hoá Polyline tương tác cho phép bạn tạo nhiều dòng mã hoá được mã hoá trong giao diện người dùng hoặc giải mã nhiều dòng để hiển thị trên bản đồ. Ví dụ: sử dụng tiện ích này để giải mã một polyline được tạo bằng mã bên dưới.
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ấp độ tuyến đường, thông tin này được đưa vào đối tượng RouteTravelAdvisory (REST) hoặc RouteTravelAdvisory (gRPC).
Ở phần chân, thông tin này được đưa vào một đối tượng RouteLegTravelAdvisory (REST) hoặc RouteLegTravelAdvisory (gRPC).
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ỉ địnhroutes.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ặcroutes.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ị startPolylinePointIndex
và endPolylinePointIndex
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 Android và Cá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