Method: computeRoutes

ターミナルと中間地点のセットを指定すると、プライマリ ルートとオプションの代替ルートを返します。

注: このメソッドでは、入力にレスポンス フィールド マスクを指定する必要があります。レスポンス フィールド マスクを指定するには、URL パラメータ $fields または fields を使用するか、HTTP/gRPC ヘッダー X-Goog-FieldMask を使用します(使用可能な URL パラメータとヘッダーをご覧ください)。値はカンマ区切りのフィールド フィールドのリストです。詳しくは、フィールドパスの作成方法に関するドキュメントをご覧ください。

たとえば、次のメソッドを使用します。

  • 使用可能なすべてのフィールドのフィールド マスク(手動検査用): X-Goog-FieldMask: *
  • ルートレベルの所要時間、距離、ポリラインのフィールド マスク(本番環境設定の例): X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline

ワイルドカード(*)レスポンスのフィールド マスクを使用したり、トップレベル(routes)でフィールド マスクを指定したりしないことをおすすめします。理由は次のとおりです。

  • 必要なフィールドのみを選択して計算サイクルを短縮することで、より短いレイテンシで結果を返すことができます。
  • 本番環境ジョブに必要なフィールドのみを選択すると、安定したレイテンシのパフォーマンスが確保されます。今後、レスポンス フィールドがさらに追加される可能性があります。また、これらの新しいフィールドでは、追加の計算時間が必要になることがあります。すべてのフィールドを選択するか、トップレベルですべてのフィールドを選択すると、追加された新しいフィールドが自動的にレスポンスに含まれるため、パフォーマンスの低下が発生することがあります。
  • 必要なフィールドのみを選択すると、レスポンス サイズが小さくなり、ネットワーク スループットも高くなります。

HTTP リクエスト

POST https://routes.googleapis.com/directions/v2:computeRoutes

この URL では gRPC Transcoding 構文を使用します。

リクエスト本文

リクエストの本文には次の構造のデータが含まれます。

JSON 表現
{
  "origin": {
    object (Waypoint)
  },
  "destination": {
    object (Waypoint)
  },
  "intermediates": [
    {
      object (Waypoint)
    }
  ],
  "travelMode": enum (RouteTravelMode),
  "routingPreference": enum (RoutingPreference),
  "polylineQuality": enum (PolylineQuality),
  "polylineEncoding": enum (PolylineEncoding),
  "departureTime": string,
  "computeAlternativeRoutes": boolean,
  "routeModifiers": {
    object (RouteModifiers)
  },
  "languageCode": string,
  "regionCode": string,
  "units": enum (Units),
  "requestedReferenceRoutes": [
    enum (ReferenceRoute)
  ],
  "extraComputations": [
    enum (ExtraComputation)
  ]
}
フィールド
origin

object (Waypoint)

必須。出発地の地点。

destination

object (Waypoint)

必須。目的地の地点。

intermediates[]

object (Waypoint)

(省略可)経路上の地点のセット(到着駅または停留所)。最大 25 の中間地点がサポートされます。

travelMode

enum (RouteTravelMode)

(省略可)移動手段を指定します。

routingPreference

enum (RoutingPreference)

(省略可)ルートの計算方法を指定します。サーバーは選択したルーティング設定を使用してルートを計算します。ルーティングの設定がエラーや非常に長いレイテンシになると、エラーが返されます。このオプションを指定できるのは、travelModeDRIVE または TWO_WHEELER の場合に限られます。それ以外の場合、リクエストは失敗します。

polylineQuality

enum (PolylineQuality)

(省略可)ポリラインの品質の設定を指定します。

polylineEncoding

enum (PolylineEncoding)

(省略可)ポリラインに優先するエンコードを指定します。

departureTime

string (Timestamp format)

(省略可)出発時刻。この値を設定しなかった場合、デフォルトでリクエストを行った時刻が設定されます。この値をすでに発生している時間に設定すると、リクエストは失敗します。

RFC3339 UTC「Zulu」形式のタイムスタンプ。解像度はナノ秒で、小数点以下 9 桁まで指定できます。(例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z")。

computeAlternativeRoutes

boolean

(省略可)ルートに加え、代替ルートを計算するかどうかを指定します。中間地点を持つリクエストに対して代替ルートは返されません。

routeModifiers

object (RouteModifiers)

(省略可)ルートの計算方法に影響する一連の条件。

languageCode

string

(省略可)「en-US」や「sr-Latn」などの BCP-47 言語コード。詳しくは、http://www.unicode.org/reports/tr35/#Unicode_locale_identifier を参照してください。サポートされている言語の一覧については、言語サポートをご覧ください。この値を指定しない場合は、経路リクエストの場所から表示言語が推測されます。

regionCode

string

(省略可)ccTLD(「トップレベル ドメイン」)の 2 文字の値として指定される地域コード詳しくは、https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#Country_code_top-level_domains をご覧ください。

units

enum (Units)

(省略可)表示フィールドの測定単位を指定します。これには、NavigationInstructioninstruction フィールドが含まれます。ルート、区間、歩数距離、所要時間の測定単位は、この値の影響を受けません。この値を指定しない場合、表示ユニットはリクエストの場所から推測されます。

requestedReferenceRoutes[]

enum (ReferenceRoute)

(省略可)デフォルト ルートに加えて、リクエストの一部として計算する参照ルートを指定します。参照ルートは、デフォルト ルートとは異なるルートの計算目標を持つルートです。たとえば、FUEL_EFFICIENT 参照ルートの計算では、最適な燃料効率の高いルートを生成するさまざまなパラメータが考慮されます。

extraComputations[]

enum (ExtraComputation)

(省略可)リクエストを完了するために使用できる追加の計算のリスト。注: これらの追加の計算は、レスポンスで追加のフィールドを返す場合があります。これらの追加フィールドは、レスポンスで返されるフィールド マスクで指定する必要があります。

レスポンスの本文

成功すると、レスポンスの本文に次の構造のデータが含まれます。

v2.computeRoutes レスポンス メッセージ。

JSON 表現
{
  "routes": [
    {
      object (Route)
    }
  ],
  "fallbackInfo": {
    object (FallbackInfo)
  },
  "geocodingResults": {
    object (GeocodingResults)
  }
}
フィールド
routes[]

object (Route)

compute_alternatives_routes を指定すると、計算されたルートの配列(最大 3 つ)が含まれ、指定しない場合のルートは 1 つのみが含まれます。この配列に複数のエントリが含まれている場合、最初のルートが最も推奨されます。配列が空の場合は、ルートが見つからなかったことを示します。

fallbackInfo

object (FallbackInfo)

入力された設定内容をすべて考慮してもサーバーでルート結果を計算できない場合は、別の計算方法が使用されることがあります。フォールバック モードが使用されている場合、このフィールドにはフォールバック レスポンスに関する詳細情報が含まれます。それ以外の場合はこのフィールドが設定されていません。

geocodingResults

object (GeocodingResults)

住所として指定された地点のジオコーディング レスポンス情報が含まれます。

ポリラインの画質

ポリラインの品質を指定する値のセット。

列挙型
POLYLINE_QUALITY_UNSPECIFIED ポリラインの品質設定が指定されていません。デフォルトは OVERVIEW です。
HIGH_QUALITY 高品質のポリラインを指定します。これは OVERVIEW を超えるポイントで構成されますが、レスポンス サイズが大きくなります。精度を高めるために、この値を使用します。
OVERVIEW 少数のポリラインで構成される概要ポリラインを指定します。この値は、ルートの概要を表示する場合に使用します。このオプションを使用すると、HIGH_QUALITY オプションを使用する場合よりもリクエストのレイテンシが低くなります。

ポリラインのエンコード

返されるポリラインの優先タイプを指定します。

列挙型
POLYLINE_ENCODING_UNSPECIFIED ポリラインのタイプ設定が指定されていません。デフォルトは ENCODED_POLYLINE です。
ENCODED_POLYLINE ポリライン エンコード アルゴリズムを使用してエンコードされたポリラインを指定します。
GEO_JSON_LINESTRING GeoJSON LineString 形式でポリラインを指定します。

単位

ディスプレイで使用される測定単位を指定する値のセット。

列挙型
UNITS_UNSPECIFIED 測定単位が指定されていません。デフォルトは、リクエストから推定される測定単位です。
METRIC 指標の単位。
IMPERIAL ヤード・ポンド法

ReferenceRoute

ComputeRoutesRequest でサポートされている参照ルート。

列挙型
REFERENCE_ROUTE_UNSPECIFIED 不使用。この値を含むリクエストは失敗します。
FUEL_EFFICIENT 燃料効率が良いルートこの値のラベルが付いたルートは、燃料消費量などのパラメータに最適化されていると判断されます。

外算出

リクエストの完了時に実行する追加の計算。

列挙型
EXTRA_COMPUTATION_UNSPECIFIED 不使用。この値を含むリクエストは失敗します。
TOLLS 有料道路の情報。
FUEL_CONSUMPTION そのルートの推定燃料消費量。
TRAFFIC_ON_POLYLINE 経路の交通認識のポリライン。

ルーティング

ルートは、開始地点、終了地点、中間地点をつなぐ一連の接続済み道路セグメントで構成されます。

JSON 表現
{
  "routeLabels": [
    enum (RouteLabel)
  ],
  "legs": [
    {
      object (RouteLeg)
    }
  ],
  "distanceMeters": integer,
  "duration": string,
  "staticDuration": string,
  "polyline": {
    object (Polyline)
  },
  "description": string,
  "warnings": [
    string
  ],
  "viewport": {
    object (Viewport)
  },
  "travelAdvisory": {
    object (RouteTravelAdvisory)
  },
  "routeToken": string
}
フィールド
routeLabels[]

enum (RouteLabel)

Route のラベル。ルートの他のプロパティと比較する際に役立ちます。

legs[]

object (RouteLeg)

ルートを構成する区間(地点間のセグメント)です。各区間は、2 つの非 via 地点間のルートに対応します。たとえば、中間地点がないルートには一方の区間しかありません。via 以外の中間地点を 1 つ含むルートには、2 つの区間があります。1 つの中間地点 via を含むルートには、1 つの区間があります。区間の順序は、地点 origin から intermediates から destination までの地点の順序と一致します。

distanceMeters

integer

ルートの移動距離(メートル単位)。

duration

string (Duration format)

ルートの移動に必要な時間。routingPreferenceTRAFFIC_UNAWARE に設定する場合、この値は staticDuration と同じです。routingPreferenceTRAFFIC_AWARE または TRAFFIC_AWARE_OPTIMAL に設定すると、交通状況を考慮してこの値が計算されます。

小数点以下 9 桁までの値で、末尾が「s」の秒数です。例: "3.5s"

staticDuration

string (Duration format)

交通状況を考慮せずにルートを走行した時間。

小数点以下 9 桁までの値で、末尾が「s」の秒数です。例: "3.5s"

polyline

object (Polyline)

ルート全体のポリライン。このポリラインは、すべての legs を合わせたポリラインになります。

description

string

経路の説明。

warnings[]

string

ルートを表示するときに表示する警告の配列。

viewport

object (Viewport)

ポリラインのビューポート境界ボックス。

travelAdvisory

object (RouteTravelAdvisory)

経路に関する追加情報。

routeToken

string

NavigationSDK に渡せる、ウェブセーフな base64 でエンコードされたルートトークン。これにより、Navigation SDK はナビゲーション中にルートを再構築できます。また、再ルーティングが発生した場合、Route v2.computeRoutes が呼び出されたときに元のインテントが使用されます。お客様はこのトークンを不透明な blob として扱う必要があります。注: Route.route_token は、ComputeRoutesRequest.routing_preferenceTRAFFIC_AWARE または TRAFFIC_AWARE_OPTIMAL に設定しているリクエストでのみ使用できます。Route.route_token は、地点を使うリクエストではサポートされていません。

ルートラベル

Route のラベル。ルートの他のプロパティと比較する際に役立ちます。

列挙型
ROUTE_LABEL_UNSPECIFIED デフォルト - 使用されません。
DEFAULT_ROUTE ルートの計算で返されるデフォルトの「最適」ルート。
DEFAULT_ROUTE_ALTERNATE デフォルトの「最適な」ルートの代替。ComputeRoutesRequest.compute_alternative_routes を指定すると、このようなルートが返されます。
FUEL_EFFICIENT 燃料効率が良いルートこの値のラベルが付いたルートは、燃料消費量などのエコ パラメータに合わせて最適化されています。

ルートレッグ

via 以外の地点間のセグメントをカプセル化します。

JSON 表現
{
  "distanceMeters": integer,
  "duration": string,
  "staticDuration": string,
  "polyline": {
    object (Polyline)
  },
  "startLocation": {
    object (Location)
  },
  "endLocation": {
    object (Location)
  },
  "steps": [
    {
      object (RouteLegStep)
    }
  ],
  "travelAdvisory": {
    object (RouteLegTravelAdvisory)
  }
}
フィールド
distanceMeters

integer

経路の区間の移動距離(メートル単位)。

duration

string (Duration format)

脚の移動に必要な時間。route_preferenceTRAFFIC_UNAWARE に設定されている場合、この値は staticDuration と同じです。route_preferenceTRAFFIC_AWARE または TRAFFIC_AWARE_OPTIMAL の場合、この値は交通状況に基づいて計算されます。

小数点以下 9 桁までの値で、末尾が「s」の秒数です。例: "3.5s"

staticDuration

string (Duration format)

交通状況を考慮せずに計算された、区間内の所要時間。

小数点以下 9 桁までの値で、末尾が「s」の秒数です。例: "3.5s"

polyline

object (Polyline)

この区間の全体的なポリライン。これには各 step のポリラインも含まれます。

startLocation

object (Location)

この区間の始点の場所。指定された origin と異なる場合があります。たとえば、指定した origin が道路の近くにない場合、これは道路上の地点です。

endLocation

object (Location)

この区間の終点。指定された destination と異なる場合があります。たとえば、指定した destination が道路の近くにない場合、これは道路上の地点です。

steps[]

object (RouteLegStep)

この区間のセグメントを示すステップの配列。各ステップは 1 つのナビゲーション命令を表します。

travelAdvisory

object (RouteLegTravelAdvisory)

ルートの区間で考えられる交通ゾーンの制限など、ユーザーに通知する必要のある追加情報をカプセル化します。

Polyline

エンコードされたポリラインをカプセル化します。

JSON 表現
{

  // Union field polyline_type can be only one of the following:
  "encodedPolyline": string,
  "geoJsonLinestring": {
    object
  }
  // End of list of possible types for union field polyline_type.
}
フィールド
共用体フィールド polyline_type。ポリラインのタイプをカプセル化します。デフォルトは encoded_ポリラインです。polyline_type は次のいずれかになります。
encodedPolyline

string

ポリライン エンコード アルゴリズムを使用したポリラインの文字列エンコード

geoJsonLinestring

object (Struct format)

GeoJSON LineString 形式でポリラインを指定します。

ルートレッグステップ

RouteLeg のセグメントをカプセル化します。ステップは 1 つのナビゲーション命令に対応します。ルート区間は複数のステップで構成されます。

JSON 表現
{
  "distanceMeters": integer,
  "staticDuration": string,
  "polyline": {
    object (Polyline)
  },
  "startLocation": {
    object (Location)
  },
  "endLocation": {
    object (Location)
  },
  "navigationInstruction": {
    object (NavigationInstruction)
  },
  "travelAdvisory": {
    object (RouteLegStepTravelAdvisory)
  }
}
フィールド
distanceMeters

integer

このステップの移動距離(メートル単位)。状況によっては、このフィールドに値が表示されないことがあります。

staticDuration

string (Duration format)

交通状況を考慮しない、このステップの移動時間。状況によっては、このフィールドに値が表示されないことがあります。

小数点以下 9 桁までの値で、末尾が「s」の秒数です。例: "3.5s"

polyline

object (Polyline)

このステップに関連付けられたポリライン。

startLocation

object (Location)

このステップの始点の場所。

endLocation

object (Location)

このステップの終了位置。

navigationInstruction

object (NavigationInstruction)

ナビゲーション手順。

travelAdvisory

object (RouteLegStepTravelAdvisory)

レッグステップのトラフィック ゾーン制限など、ユーザーに通知する必要のある追加情報がカプセル化されています。

Maneuver

現在のステップで行うナビゲーション アクションを指定する値のセット(左左折、マージ、ストレートなど)。

列挙型
MANEUVER_UNSPECIFIED 使用されません。
TURN_SLIGHT_LEFT 少し左に回します。
TURN_SHARP_LEFT 左に鋭角に曲がります。
UTURN_LEFT 左折します。
TURN_LEFT 左折します。
TURN_SLIGHT_RIGHT 少し右に曲がります。
TURN_SHARP_RIGHT 右に鋭角に曲がります。
UTURN_RIGHT 右左折します。
TURN_RIGHT 左折します。
STRAIGHT まっすぐ
RAMP_LEFT 左のランプに入ります。
RAMP_RIGHT 適切なランプに進む。
MERGE トラフィックに統合します。
FORK_LEFT 左のフォークを行く。
FORK_RIGHT 適切なフォークを。
FERRY フェリーを利用します。
FERRY_TRAIN 電車に乗ってフェリーに乗ります。
ROUNDABOUT_LEFT ロータリーを左折します。
ROUNDABOUT_RIGHT 環状交差点で右に曲がります。

ルートレッグトラベルアドバイザリ

レッグステップのトラフィック ゾーン制限など、ユーザーに通知する必要のある追加情報がカプセル化されています。

JSON 表現
{
  "speedReadingIntervals": [
    {
      object (SpeedReadingInterval)
    }
  ]
}
フィールド
speedReadingIntervals[]

object (SpeedReadingInterval)

注: 現在、このフィールドにはデータが入力されていません。

ルート区間の移動案内

ルートの区間で考えられる交通ゾーンの制限など、ユーザーに通知する必要のある追加情報をカプセル化します。

JSON 表現
{
  "tollInfo": {
    object (TollInfo)
  },
  "speedReadingIntervals": [
    {
      object (SpeedReadingInterval)
    }
  ]
}
フィールド
tollInfo

object (TollInfo)

特定の RouteLegs の有料道路に関する情報をカプセル化します。このフィールドは、RouteLegs で有料道路が予想される場合にのみ入力されます。このフィールドが設定されていても、EstimatedPrice サブフィールドに値が入力されていない場合、道路には有料道路が含まれることが想定されますが、推定料金はわかりません。このフィールドが存在しない場合、RouteLeg には有料道路がありません。

speedReadingIntervals[]

object (SpeedReadingInterval)

トラフィック密度の詳細を示す読み取り間隔。TRAFFIC_AWARETRAFFIC_AWARE_OPTIMAL のルーティング設定を適用する場合に適用されます。間隔は、RouteLg のポリライン全体を重複なしでカバーします。指定した間隔の始点は、前の間隔の終点と同じです。

例:

polyline: A ---- B ---- C ---- D ---- E ---- F ---- G
speedReadingIntervals: [A,C), [C,D), [D,G).

ビューポート

緯度と経度のビューポート。lowhigh の対角線上にある 2 つの地点として表されます。ビューポートは閉じられた領域とみなされます(つまりその境界を含む)。緯度の境界は -90 ~ 90 度の範囲で、経度の境界は -180 ~ 180 度の範囲にする必要があります。次のようなケースが考えられます。

  • low = high の場合、ビューポートはその単一のポイントで構成されます。

  • low.longitude > high.longitude の場合、経度の範囲が反転します(ビューポートが経度 180 度の線と交差します)。

  • low.longitude = -180 度、high.longitude = 180 度の場合、ビューポートにはすべての経度が含まれます。

  • low.longitude = 180 度、high.longitude = -180 度の場合、経度の範囲は空です。

  • low.latitude > high.latitude の場合、緯度の範囲は空です。

lowhigh はどちらも入力する必要があります。また、表現されたボックスは空にできません(上記の定義で指定)。ビューポートが空の場合はエラーが発生します。

たとえば、次のビューポートはニューヨークを完全に囲んでいます。

{ "low": { "latitude": 40.477398, "longitude": -74.259087 }, "high": { "latitude": 40.91618, "longitude": -73.70018 } }

JSON 表現
{
  "low": {
    object (LatLng)
  },
  "high": {
    object (LatLng)
  }
}
フィールド
low

object (LatLng)

必須。ビューポートの下限。

high

object (LatLng)

必須。ビューポートの要点。

ジオコーディングの結果

出発地、目的地、中間地点の GeocodedWaypoint が含まれます。住所の地点にのみデータが入力されます。

JSON 表現
{
  "origin": {
    object (GeocodedWaypoint)
  },
  "destination": {
    object (GeocodedWaypoint)
  },
  "intermediates": [
    {
      object (GeocodedWaypoint)
    }
  ]
}
フィールド
origin

object (GeocodedWaypoint)

ジオコーディングされた出発地。

destination

object (GeocodedWaypoint)

ジオコーディングされた地点。

intermediates[]

object (GeocodedWaypoint)

ジオコーディングされた中間地点のリスト。各地点は、リクエストで指定された地点のゼロベースの地点に対応するインデックス フィールドで構成されます。

ジオコーディングされた地点

地点として使用される場所の詳細。住所の地点にのみデータが入力されます。住所がジオコーディングされた住所を特定するためのジオコーディング結果の詳細を含めます。

JSON 表現
{
  "geocoderStatus": {
    object (Status)
  },
  "type": [
    string
  ],
  "partialMatch": boolean,
  "placeId": string,
  "intermediateWaypointRequestIndex": integer
}
フィールド
geocoderStatus

object (Status)

ジオコーディングの処理結果を示すステータス コードを示します。

type[]

string

結果の型(ゼロ個以上のタイプタグの形式)。サポートされるタイプ: https://developers.google.com/maps/documentation/Geocoding/requests-Geocoding#Types

partialMatch

boolean

ジオコーダによって、元のリクエストに完全一致する住所は見つからなかったものの、部分一致する住所は見つかったことを示します。元のリクエストで住所の表記が間違っていたり、不完全である可能性があります。

placeId

string

この結果の場所 ID。

intermediateWaypointRequestIndex

integer

リクエスト内の対応する中間地点のインデックス。対応する地点が中間地点である場合にのみ入力されます。