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 を渡すことができます。レスポンスには、リクエスト内の各プレイス ID の制限速度が含まれます。API は、指定されたプレイス ID に対して道路スナップを行いません。
snapToRoadsリクエストまたはnearestRoadsリクエストを送信して関連するプレイス ID を見つけ、それらをspeedLimitsリクエストの入力として指定できます。次の例は、placeIdパラメータと 2 つのプレイス ID を示しています:placeId=ChIJs5ydyTiuEmsR0fRSlU0C7k0&placeId=ChIJW__r4ERXzpQRgkeRL6P0m3Y
key- アプリケーションの API キー。アプリケーションは、 リクエストを Roads APIに送信するたびに、各リクエストに API キーを含めて自身を識別する必要があります。 キーを取得する方法をご確認ください。
オプション パラメータ
units- 制限速度をキロメートルまたはマイルで返すかどうか。これはKPHまたはMPHに設定できます。デフォルトはKPHです。
回答
speedLimits レスポンスには、次の要素が含まれる場合があります。
speedLimits- 道路メタデータの配列。各要素は次のフィールドで構成されます。placeId- 場所の固有識別子。Roads API から返されるすべてのプレイス ID は、道路区分に対応します。Roads APIspeedLimit- その道路区分の制限速度。units-KPHまたはMPHを返します。
snappedPoints- スナップされたポイントの配列。この配列は、リクエストにpathパラメータが含まれている場合にのみ存在します。各ポイントは次のフィールドで構成されます。location-latitude値とlongitude値が含まれます。originalIndex- 元のリクエスト内の対応する値を示す整数。リクエスト内の各値は、レスポンス内のスナップされた値にマッピングされます。これらの値は0から始まるインデックスが付けられるため、originalIndexが4のポイントは、pathパラメータに渡された 5 番目の緯度と経度のスナップされた値になります。placeId- 場所の固有識別子。Roads API から返されるすべてのプレイス ID は、道路区分に対応します。Roads APIplaceIdは、制限速度リクエストで渡して、その道路区間の制限速度を判断できます。
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"
}
]
}使用に関する推奨事項
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 を返すことができます。
道路区分で乗用車とトラックの制限速度が別々に掲示されている場合はどうなりますか?
Roads API は、 自動車の最大制限速度のみを返します。