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
からインデックス付けされるため、originalIndex
が4
のポイントは、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 を返すことができます。