Roads API は、特定の道路区間の掲示された制限速度を返します。制限速度が変化する道路セグメントの場合、そのセグメントのデフォルトの速度制限が返されます。
Roads API から返される制限速度データの正確さは保証されません。提示される制限速度データはリアルタイムのものではなく、推定値、不正確、不完全、最新ではない可能性があります。レート制限データを利用できるリージョンについては、カバレッジの詳細をご覧ください。
Requests
制限速度のリクエストは 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 キー。アプリケーションは、リクエストごとに API キーを含めることで、リクエストを Roads 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
エンドポイントから取得した場所 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" } ] }
使用に関する推奨事項
制限速度サービスの呼び出しを最小限に抑えるため、アセットの場所を 5 ~ 15 分間隔でサンプリングすることをおすすめします(正確な値はアセットの移動速度によって異なります)。アセットが静止している場合は、1 つの位置情報のサンプルで十分です(複数の呼び出しを行う必要はありません)。
全体的なレイテンシを最小限に抑えるため、モバイル アセットの場所を受け取るたびに API を呼び出すのではなく、ある程度データが蓄積されたら制限速度サービスを呼び出すことをおすすめします。
一部/すべての速度制限がないのはなぜですか?
speedLimits
がないことの最も一般的な原因は、道路セグメントではない場所の速度制限のリクエストです。
上の例では、バスコ ダ ガマ橋を使ってコンセプトを説明しています。この橋はリオ テホ橋の E90 道路を渡っています。ブリッジ自体の場所 ID は ChIJUzt97ZEwGQ0RM1JzQfqoDtU です。上記のレスポンスの 1 番目の道路セグメントは E90 道路の一部で、場所 ID は ChIJX12duJAwGQ0Ra0d4Oi4jOGE です。このサンプル リクエストでは、道路場所 ID を橋の場所 ID に置き換えた場合、ブリッジの場所 ID が個々の道路セグメントを参照しないため、レスポンスに含まれる speedLimits
配列には 2 つの制限速度しかありません。また、道路 ID のプレイス ID がない場合、レスポンスに制限速度は含まれません。
場所 ID を使用して制限速度をリクエストする場合は、各場所 ID が道路の種類を指しており、別の種類の場所を参照していないことを確認してください。個々の道路セグメントの場所 ID は、snapToRoads
または nearestRoads
リクエストを使用して取得します。これらのリクエストは、1 回の呼び出しで複数の場所 ID を返すことができます。