返す情報を選択する
メソッドを呼び出してルートの計算またはルート マトリックスの計算を行う場合は、レスポンスで返すフィールドを指定して、必要な情報を指定する必要があります。返されるフィールドのデフォルト リストはありません。このリストを省略すると、メソッドはエラーを返します。
フィールド リストを指定するには、レスポンス フィールド マスクを作成します。次に、URL パラメータ $fields
または fields
を使用するか、HTTP または gRPC ヘッダー X-Goog-FieldMask
を使用して、レスポンス フィールド マスクをメソッドに渡します。
フィールド マスキングは、不要なデータをリクエストしないようにするための優れた設計プラクティスです。これにより、不必要な処理時間や課金を回避できます。
URL パラメータの詳細については、システム パラメータをご覧ください。
レスポンス フィールド マスクを定義する
レスポンス フィールド マスクは、パスのカンマ区切りリストです。各パスには、レスポンス メッセージ内の一意のフィールドを指定します。パスは、トップレベルのレスポンス メッセージから始まり、指定されたフィールドへのドット区切りパスを使用します。
フィールドパスを次のように作成します。
topLevelField[.secondLevelField][.thirdLevelField][...]
- Compute ルートのフィールド マスク
- Compute ルート行列のフィールド マスク
- REST: 返すレスポンスの本文のフィールドを指定します。
- gRPC: 返されるレスポンスの RouteMatrixElement オブジェクトのフィールドを指定します。
フィールド マスクの作成方法について詳しくは、field_mask.proto をご覧ください。
使用するフィールド マスクを決定する
使用するフィールド マスクを指定する方法は次のとおりです。
- フィールド マスク
*
を使用して、すべてのフィールドをリクエストします。 - レスポンスのフィールドの階層を確認して、必要なフィールドを決定します。
- フィールド階層を使用してフィールド マスクを作成します。
たとえば、交通機関のルートからのこの部分的なレスポンスは、次のようになります。
"routes": [ { "legs": [ { "distanceMeters": 12886, } ... ]}]
distanceMeters
フィールドのみを返す場合、フィールド マスクは次のようになります。
routes.legs.distanceMeters
別の例: レスポンスの legs
の下にあるすべてを返す場合、フィールド マスクは次のようになります。
routes.legs
フィールドパスを指定します
このセクションでは、レスポンス フィールド マスクの一部としてフィールドパスを指定する方法の例を示します。
computeRoutes
に対する REST 呼び出し
最初の例では、computeRoutes
メソッドの REST 呼び出しを使用してルートを計算します。この例では、ヘッダーでフィールド マスクを指定し、レスポンスで Route.distanceMeters
フィールドと Route.duration
フィールドを返します。必ずフィールド名の前に routes
を付けるようにしてください。
-H X-Goog-FieldMask: routes.distanceMeters,routes.duration
computeRouteMatrix
に対する REST 呼び出し
ルート マトリックスの計算に使用される REST computeRouteMatrix
メソッドの場合、ヘッダーで、出発地と目的地の組み合わせごとに originIndex
、destinationIndex
、duration
を返すように指定します。
-H X-Goog-FieldMask: originIndex,destinationIndex,duration
gRPC 呼び出し
gRPC の場合は、レスポンス フィールド マスクを含む変数を設定します。その後、その変数をリクエストに渡すことができます。
const ( fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline" )
フィールドパスに関する考慮事項
必要なフィールドのみをレスポンスに含めます。必要なフィールドだけを返すことができます。
- 処理時間を短縮して、低レイテンシで結果が返されるようにする。
- 今後 API でレスポンス フィールドが追加され、それらの新しいフィールドの計算時間が長くなる場合に、安定したレイテンシ パフォーマンスを確保できます。すべてのフィールドを選択した場合や、トップレベルですべてのフィールドを選択した場合、すべての新しいフィールドが自動的にレスポンスに含まれるため、パフォーマンスが低下する可能性があります。
- レスポンス サイズが小さくなり、ネットワーク スループットが高くなります。
- 不要なデータをリクエストしないようにします。これにより、不要な処理時間と課金を回避できます。
ルートトークンをリクエストする
Routes API が生成されたルートのルートトークンを返すようにリクエストするには、ルートトークンを返すための要件を満たし、routes.route_token
フィールド マスクを使用してトークンをリクエストします。
travel_mode
をDRIVING
に設定します。routing_preference
をTRAFFIC_AWARE
またはTRAFFIC_AWARE_OPTIMAL
に設定します。- ルートの地点に
via
地点がないことを確認します。 - ルートトークンのフィールド マスクを指定します。
-H X-Goog-FieldMask: routes.route_token
計画したルートは Navigation SDK で使用できます。詳しくは、ルートを計画する(Android)またはルートを計画する(iOS)をご覧ください。
ルートトークンの例
以下は、出発地、目的地、目的地を 1 つだけにしたルートのリクエスト本文の例です。フィールド マスクを使用して、ルートの所要時間、距離、ルートのポリラインとともにルートトークンをリクエストしています。
terminal curl -X POST -d {"origin":{ "location": { "latLng":{ "latitude": -37.8167, "longitude": 144.9619 } } }, "destination":{ "location": { "latLng":{ "latitude":-37.8155, "longitude": 144.9663 } } }, "routingPreference":"TRAFFIC_AWARE", "travelMode":"DRIVE" } -H X-Goog-FieldMask: routes.route_token,routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline 'https://routes.googleapis.com/directions/v2:computeRoutes'
詳細については、Compute Routes API リファレンスをご覧ください。