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 が道路セグメントを参照しており、別の種類の場所を参照していないことを確認します。各リクエストで最大 100 個のプレイス ID を渡すことができます。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
- ユーザーに表示される警告を含む文字列。
パスを使用したリクエストの例
このリクエストは、ポルトガルのリスボンにあるヴァスコ ダ ガマ橋を渡るパス内の指定された緯度/経度ペアに最も近い各道路区分の制限速度を取得します。
リクエスト
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 を渡すことができます。snapToRoads
リクエストまたは nearestRoads
リクエストを使用して、道路セグメントのプレイス ID を取得することをおすすめします。プレイス ID を渡すと、API は各プレイス ID で表される道路区間の制限速度を返します。API は、指定されたプレイス ID に道路スナップを適用しません。
次の例では、ポルトガルのリスボンにあるヴァスコ・ダ・ガマ橋を横断する道路区間の制限速度をリクエストしています。
リクエスト
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 を返すことができます。