制限速度

Roads API は、特定の道路区分の掲示された制限速度を返します。制限速度が変動する道路区分の場合は、その区分のデフォルトの制限速度が返されます。

Roads API から返される制限速度データの正確性は保証されません。提供される制限速度データはリアルタイムではなく、推定値、不正確な値、不完全な値、古い値である可能性があります。制限速度データが利用可能な地域については、カバレッジの詳細をご覧ください。

リクエスト

制限速度のリクエストは HTTPS 経由で送信する必要があります。リクエストの形式は次のとおりです。

https://roads.googleapis.com/v1/speedLimits?parameters&key=YOUR_API_KEY

パラメータの使用

必須パラメータ

  • path または placeId パラメータ。
    • path - 経路を表す最大 100 個の緯度と経度のペアのリスト。緯度と経度の値はカンマで区切る必要があります。緯度と経度のペアはパイプ文字(|)で区切る必要があります。path パラメータを指定すると、API はまず、(snapToRoads リクエストの場合と同様に)車両が走行する可能性が高い道路にパスをスナップし、関連する道路セグメントの制限速度を決定します。API でパスをスナップしない場合は、次に説明するように placeId パラメータを渡す必要があります。次の例は、3 つの緯度/経度ペアを含む path パラメータを示しています。path=60.170880,24.942795|60.170879,24.942796|60.170877,24.942796
    • placeId - 1 つ以上の道路セグメントを表すプレイス ID。各プレイス ID が、道路セグメントを参照していることを確認します。1 回のリクエストで渡せるプレイス ID は 100 個までです。この API は、指定されたプレイス ID に対して道路スナップを行いません。レスポンスには、リクエスト内の各プレイス ID の制限速度が含まれます。snapToRoads リクエストまたは nearestRoads リクエストを送信して関連するプレイス ID を検索し、speedLimits リクエストへの入力として指定できます。次の例は、2 つのプレイス ID を含む placeId パラメータを示しています。 placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU
  • key - アプリケーションの API キー。アプリケーションは、Roads API にリクエストを送信するたびに、各リクエストに API キーを含めて自身を識別する必要があります。キーを取得する方法を学ぶ。

オプション パラメータ

  • units - 制限速度をキロメートル / 時またはマイル / 時で返すかどうか。KPH または MPH に設定できます。デフォルトは KPH です。

レスポンス

speedLimits レスポンスには、次の要素が存在する場合があります。

  • speedLimits - 道路のメタデータの配列。各要素は次のフィールドで構成されます。
    • placeId - 場所の一意の識別子。Roads API によって返されるプレイス ID はすべて、道路セグメントに対応しています。
    • speedLimit - その道路区間の制限速度。
    • units - KPH または MPH を返します。
  • snappedPoints - スナップされたポイントの配列。この配列は、リクエストに path パラメータが含まれている場合にのみ存在します。各ポイントは次のフィールドで構成されます。
    • location - latitude 値と longitude 値が含まれます。
    • originalIndex - 元のリクエストに対応する値を示す整数。リクエスト内の各値は、レスポンスのスナップされた値にマッピングする必要があります。これらの値は 0 からインデックス付けされるため、originalIndex4 のポイントは、path パラメータに渡される 5 番目の緯度/経度のスナップされた値になります。
    • placeId - 場所の一意の識別子。Roads API によって返されるプレイス ID はすべて、道路セグメントに対応しています。placeId は、制限速度リクエストで渡して、その道路区間の制限速度を特定できます。
  • warning_message - ユーザーに表示される警告を含む文字列。

パスを使用したリクエストの例

このリクエストは、ポルトガルのリスボンにある Vasco da Gama 橋を横切る経路で、指定された緯度/経度ペアに最も近い各道路区分の制限速度を取得します。

リクエスト

https://roads.googleapis.com/v1/speedLimits?path=38.75807927603043,-9.03741754643809|38.6896537,-9.1770515|41.1399289,-8.6094075&key=YOUR_API_KEY

レスポンス

{
  speedLimits:
  [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ],
  snappedPoints:
  [
    {
      location:
      {
        latitude: 38.75807927603043,
        longitude: -9.037417546438084
      },
      originalIndex: 0,
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE"
    },
    {
      location:
      {
        latitude: 38.689653701836896,
        longitude: -9.177051486847693
      },
      originalIndex: 1,
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU"
    },
    {
      location:
      {
        latitude: 41.13993011767777,
        longitude: -8.609400794783655
      },
      originalIndex: 2,
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M"
    }
  ],
  warningMessage: "Input path is too sparse. You should provide a path where consecutive points are closer to each other. Refer to the 'path' parameter in Google Roads API documentation."
}

上記のレスポンスに、ポイントのスパース性に関する警告メッセージが表示されています。任意の地点で最も近い道路区間の制限速度をリクエストする場合は、代わりに nearestRoads エンドポイントから取得した Place ID を使用して speedLimits を呼び出す必要があります。

プレイス ID を使用したリクエストの例

緯度と経度のペアを使用する代わりに、道路セグメントの場所 ID を渡すことができます。道路セグメントのプレイス ID は、snapToRoads リクエストまたは nearestRoads リクエストを使用して取得することをおすすめします。プレイス ID を渡すと、API は各プレイス ID で表される道路区分の制限速度を返します。API は、指定されたプレイス ID に道路スナップは適用しません。

次の例では、ポルトガルのリスボンにある Vasco da Gama 橋を横断する一部の道路セグメントの制限速度をリクエストします。

リクエスト

https://roads.googleapis.com/v1/speedLimits?placeId=ChIJX12duJAwGQ0Ra0d4Oi4jOGE&placeId=ChIJLQcticc0GQ0RoiNZJVa5GxU&placeId=ChIJJ4vQRudkJA0RpednU70A-5M&key=YOUR_API_KEY

レスポンス

{
  "speedLimits": [
    {
      placeId: "ChIJX12duJAwGQ0Ra0d4Oi4jOGE",
      speedLimit: 105,
      units: "KPH"
    },
    {
      placeId: "ChIJLQcticc0GQ0RoiNZJVa5GxU",
      speedLimit: 70,
      units: "KPH"
    },
    {
      placeId: "ChIJJ4vQRudkJA0RpednU70A-5M",
      speedLimit: 55,
      units: "KPH"
    }
  ]
}

使用上の推奨事項

Speed Limit サービスの呼び出し回数を最小限に抑えるため、5 ~ 15 分間隔でアセットの場所をサンプリングすることをおすすめします(正確な値はアセットの移動速度によって異なります)。アセットが静止している場合は、1 つの場所をサンプリングするだけで十分です(複数回呼び出す必要はありません)。

全体的なレイテンシを最小限に抑えるため、モバイル アセットの場所を受け取るたびに API を呼び出すのではなく、ある程度データが蓄積されたら制限速度サービスを呼び出すことをおすすめします。

一部またはすべての制限速度が表示されないのはなぜですか?

speedLimits がない場合の最も一般的な原因は、道路区間ではない場所の制限速度をリクエストしていることです。

上記の例では、ヴァスコ・ダ・ガマ橋を使用してコンセプトを説明しています。この橋は、リオ・テージョ川を渡る E90 道路をサポートしています。橋自体のプレイス ID は ChIJUzt97ZEwGQ0RM1JzQfqoDtU です。上記のレスポンスの最初の道路セグメントは E90 道路の一部であり、プレイス ID は ChIJX12duJAwGQ0Ra0d4Oi4jOGE です。リクエストの例で、道路のプレイス ID を橋のプレイス ID に置き換えた場合、橋のプレイス ID は個々の道路セグメントを参照しないため、レスポンスの speedLimits 配列には 2 つの制限速度のみが含まれます。さらに、いずれのプレイス ID も道路区間のものでない場合、レスポンスには制限速度は含まれません。

プレイス ID を使用して制限速度のリクエストを行う場合は、各プレイス ID が道路セグメントを指していることを確認してください。個々の道路セグメントのプレイス ID は、snapToRoads リクエストまたは nearestRoads リクエストを使用して取得するのが最適です。どちらのリクエストでも、1 回の呼び出しで複数のプレイス ID を返すことができます。