トラブルシューティング

エラー

エラーが発生した場合は、標準形式のエラー レスポンス本文が返され、HTTP ステータス コードがエラー ステータスに設定されます。

レスポンスには、次のキーを持つ単一の error オブジェクトを含むオブジェクトが含まれます。

  • code: レスポンスの HTTP ステータスと同じです。
  • message: エラーの簡単な説明。
  • status: エラーの性質を示すステータス コード。

たとえば、無効な placeId パラメータを送信すると、次のエラーが返されます。

{
  "error": {
    "code": 400,
    "message": "\"placeId\" value is malformed: \"aChIJqaknMTeuEmsRUYCD5Wd9ARM\"",
    "status": "INVALID_ARGUMENT"
  }
}

考えられるエラーは次のとおりです。

コード ステータス メッセージ トラブルシューティング
400 INVALID_ARGUMENT 指定したキーは無効です。 API キーが無効であるか、リクエストに含まれていません。鍵全体を含めて、この鍵の API が有効になっていることを確認してください。
400 INVALID_ARGUMENT 「\"path\" パラメータに無効な値が含まれています: Versa」 リクエストに無効な引数が含まれています。このエラーの原因として最も可能性が高いのは、次のとおりです。
  • path パラメータに問題があります。
    最低でも 1 地点が 100 ポイント未満になるようにしてください。各ポイントは、カンマで区切られた数値のペアにする必要があります(例: 48.409114,-123.369158)。各地点はパイプ文字(|)で区切ります。
  • リクエストに無効な placeId が含まれています。
  • リクエストに placeIdpath の両方が含まれていました。これらのパラメータは、リクエストごとに 1 つだけ指定できます。

もう存在しない道路または道路以外の場所に対して placeId が渡された場合は、このエラーが返されません。

403 PERMISSION_DENIED 未登録のリクエストがブロックされました。Google Cloud Console を使用して登録してください。 リクエストは、次のいずれかの理由で拒否されました。
  • API キーがないか、無効です。
  • アカウントで課金が有効になっていません。
  • ご自身で設定した使用量上限を超えています。
  • 設定したお支払い方法が無効になっている(クレジット カードの期限切れなど)

Google Maps Platform サービスを使用するには、アカウントで課金を有効にし、すべてのリクエストに有効な API キーを含める必要があります。この問題を解決するには、次の手順を行います。

404 NOT_FOUND このサービスには HTTPS が必要です。 リクエストを http://roads.googleapis.com/ ではなく https://roads.googleapis.com/ に送信していることを確認します。
429 RESOURCE_EXHAUSTED プロジェクトのリクエスト数の上限に達したため、リクエストが制限されました。 Google Cloud Platform Console で構成したリクエストの上限を超えています。この上限は通常、1 日あたりのリクエスト数、100 秒あたりのリクエスト数、1 ユーザーあたりの 100 秒あたりのリクエスト数として設定されます。この制限により、すべてのユーザーに対する妥当なアクセスを許可する一方で、1 つまたは少数のユーザー グループが 1 日の割り当てを使い切ることがないように構成する必要があります。これらの上限を構成するには、API 使用量の上限設定をご覧ください。

指数バックオフ

リクエストが失敗した場合は、指数バックオフを使用してリクエストを再試行する必要があります。たとえば、リクエストが 1 回失敗した場合は 1 秒後に再試行し、再び失敗した場合は 2 秒後に再試行し、さらに 4 秒後に再試行します。これにより、多くのクライアントはリクエストの再試行を頻繁に行おうとするため、正常に機能しないリクエストや広範囲の障害が発生しても Google のサーバーにフラッディングされることはありません。

トラブルシューティングに関するよくある質問

実装に関する問題

車両の位置情報はどの頻度でサンプリングすればよいですか。
高品質の道路を撮影するには、1 ~ 10 秒にすることをおすすめします。
1 つのクエリで送信できるポイント数に制限はありますか?
はい。クエリで使用できるポイントは 100 個までです。
スナップされた緯度/経度のペアを保存するには、どの程度の精度が必要ですか?
スナップした経路がすべてのズームレベル(最大ズームレベルも含む)で道路をたどるには、スナップされた緯度と経度のペアを小数点以下 7 桁の精度で保存する必要があります。
エンコードされたポリラインを使用して、スナップされたパスを表示できますか?
エンコードしたポリラインは、小数点以下 5 桁までの精度で指定されるため、誤差は約 2 メートルになります。スナップした経路をズームレベルの高い道路に沿って表示する場合は、エンコードしたポリラインは適していません。

一般的な問題

一部のポイントがスナップされていないか、スナップされたパスにギャップがあります。どうすれば修正できますか?
  • 特定の間隔でポイントをサンプリングする場合は、より短い間隔(1 ~ 10 秒ごと)でポイントがサンプリングされるようにします。長い間隔(60 秒など)を使用すると、道路へのスナップ アルゴリズムで、十分な精度で移動した道路を判別できないことがあります。
  • 手動で地図をクリックしてポイントを作成すると、スナップ アルゴリズムでうまく処理できない少数のポイントやスパース ポイントを使用して、パスを簡単に作成できます。スナップ アルゴリズムは、近接しているポイントに最適です。Snap to Roads のデモを試すか、Roads Inspector を使用して経路をテストします。
ズームインすると、スナップした経路が道路からギザギザしたり、道路からわずかにずれたりするのはなぜですか?
  • 緯度と経度のスナップペアの精度を切り捨てずにスナップしていますか?スナップされた緯度と経度のペアを小数点以下 7 桁未満で保存すると、スナップされたパスが地図上に表示されるときに精度エラーが発生します。
  • エンコードされたポリラインを使用していますか?エンコードされたポリラインは、緯度/経度のペアが小数点以下 5 桁に切り捨てられます。これにより、数メートルの誤差が生じるため、高いズームレベルで、線がギザギザになったり、道路からわずかにずれたりします。

上記のいずれにも該当しない場合は、地図タイルが最近更新されたために、スナップに使用された道路インデックスと同期しなくなった可能性があります。一部のクエリのみが影響を受ける場合、これが原因である可能性があります。Google マップは定期的に更新されているので、地図上で古い経路(例: 数週間前に撮影した経路など)を定期的に確認する場合は、状況がより頻繁に発生する可能性があります。最適な視覚化のためには、地図タイルとスナップに使用される道路インデックスとの不整合を最小限に抑えるために、古いパスを地図に表示する直前にスナップする必要があります。

道路 X の制限速度が正しく表示されない原因は何ですか。
制限速度は、いくつかのソースに起因し、精度とカバレッジはさまざまです。特定の道路タイプで速度制限がある場合や、特定のエリアで速度が常に問題となっている場合など、パターンが見つかった場合は、次の手順に沿って Google までお知らせください。
  1. デスクトップ パソコンまたは Android 向け Google マップ アプリで Google マップを開きます。
  2. 左側のメニューを開きます。
  3. [フィードバックを送信] を選択します。注: ログインを求められる場合があります。
  4. [地図を編集] を選択します。
  5. 編集する道路区間を選択します。
  6. [次へ] を選択します。
  7. [その他] 欄に、その道路の制限速度に誤りがあることを示します。
  8. [送信] を選択します。
その他の問題も報告できます(道路の名前が間違っている、誤って描かれている、道路が閉鎖されている、私有地であるなど)。
スナップしたパスが道路ではなくカットされるのはなぜですか?
この問題を解決するには、次の点を確認してください。
  • interpolate パラメータが true に設定されていることを確認します。
  • 元のデータポイントが十分な間隔(1 ~ 10 秒ごと)でサンプリングされていることを確認します。
制限速度の変更がない道路のスナップした経路で、多数の道路セグメントが返されるのはなぜですか?
interpolate パラメータが true に設定されている場合、道路へのスナップクエリは、道路の隅、曲線、環状交差点に沿ったポリラインを返します。道路曲線の場合、速度制限が変わらなくても、複数の道路セグメントが返されます。これは、道路のジオメトリに厳密に従ったポリラインを作成するためです。