要求折線上的路況資訊

Routes Preferred API 可讓您要求沿著折線的路況資訊。路況會以速度類別 (NORMAL、SLOW、TRAFFIC_JAM) 表示,適用於回應多邊形的特定間隔。間隔是由起始 (包含) 和結束 (不含) 多邊形點的索引定義。

要求範例

路線層級和路段層級皆可使用車流量監測多邊形。在路線層級,系統會在 RouteTravelAdvisory 回應欄位下方提供交通速度資訊,格式為 SpeedReadingIntervals。如要同時取得路線的折線和交通資訊,請在回應欄位遮罩中加入 polylinespeedReadingIntervals

如果欄位遮罩包含 routes.legs.travelAdvisory.speedReadingIntervals,回應就會在 RouteLegTravelAdvisory 下方包含路段層級的交通資料。

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

如要進一步瞭解如何指定回應欄位遮罩,請參閱「"選擇要傳回的欄位"」一文。

回應範例

只要透過欄位遮罩要求 speedReadingIntervals,就會在 routes.travelAdvisory.speedReadingIntervals 下方填入這些欄位。航段層級流量資訊位於 routes.legs.travelAdvisory.speedReadingIntervals 下方。每個間隔都會由其 startPolylinePointIndexendPolylinePointIndex 和對應的速度類別加以描述。請注意,根據 proto3 實務,在間隔中缺少起始索引會對應至索引 0。

{
  "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"
          }
        ] 
      }
    }
  ]
}

使用 Maps SDK 算繪交通狀況感知折線

建議您使用 Google 地圖 SDK 提供的各種功能,在地圖上顯示交通感知折線,包括沿著折線路段的自訂著色、筆劃和圖案。如要進一步瞭解如何使用折線,請參閱「適用於 Android 的折線功能」和「適用於 iOS 的折線功能」。

折線算繪範例

Maps SDK 使用者可在速度類別和折線算繪架構之間定義自訂對應邏輯。舉例來說,您可以決定將「正常」速度顯示為地圖上的粗藍線,而「慢速」速度則顯示為粗橘線,以此類推。

下列程式碼片段會針對墨爾本至伯斯的測地線段,加上粗的藍色折線。如需詳細資訊,請參閱「自訂外觀」(適用於 Android) 和「自訂多邊形」(適用於 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