歐洲經濟區 (EEA) 開發人員

選擇要傳回的欄位

要求路線或路線矩陣時,您必須使用欄位遮罩,指定回應應傳回哪些資訊。傳回的欄位沒有預設清單。如未指定欄位遮罩,方法會傳回錯誤。

使用欄位遮罩也能確保您不會要求不必要的資料,進而縮短回應延遲時間,並避免傳回系統不需要的資訊。

您可以在回應欄位遮罩中指定所需欄位清單。接著,使用網址參數 $fields 或 fields,或使用 HTTP 或 gRPC 標頭 X-Goog-FieldMask,將回應欄位遮罩傳遞至任一方法。

如要進一步瞭解網址參數,請參閱「系統參數」。

定義回應欄位遮罩

回應欄位遮罩是路徑的逗號分隔清單,每個路徑都會指定回應訊息中的專屬欄位。路徑從頂層回應訊息開始,並使用以點分隔的路徑指向指定欄位。

請按照下列方式建構及指定欄位路徑:

  1. 找出含有所需資訊的欄位。詳情請參閱「欄位參考資料」。
  2. 判斷所需欄位的路徑,並為這些欄位建構欄位遮罩:詳情請參閱「判斷要使用的欄位遮罩」。
  3. 合併所有必要欄位的欄位遮罩,並以半形逗號分隔欄位遮罩。舉例來說,如要要求路線路段的 distanceMeters,以及每個路線路段步驟的持續時間,請輸入這兩項資訊,並以半形逗號分隔,不加空格:

    routes.legs.distanceMeters,routes.legs.steps.duration
  4. 在 API 要求中傳送欄位遮罩。舉例來說,在 curl 要求中,您會使用 -H 和 X-Goog-FieldMask 指定欄位遮罩:

    -H X-Goog-FieldMask: routes.legs.distanceMeters,routes.legs.steps.duration
如需範例和更多詳細資料,請參閱下列章節。

欄位參考資料

如要查看可透過欄位遮罩在回應中要求哪些欄位,請參閱下列清單中連結的 Routes API Compute Routes 或 Compute Route Matrix 參考資料。請以駝峰式大小寫指定欄位,如參照所示。例如 routePreference。

這些參考資料包含可用欄位,但您必須參考欄位階層,才能判斷完整的欄位遮罩路徑。如要進一步瞭解如何取得欄位階層,請參閱「決定要使用的欄位遮罩」。

  • 計算路徑欄位遮罩
    • REST:指定要在回應中傳回的 Route 物件欄位,並加上 routes. 前置字元,例如 routes.distanceMeters。
    • gRPC:指定要傳回的回應中 Route 物件的欄位。
  • 計算路線矩陣欄位遮罩

決定要使用的欄位遮罩

以下說明如何判斷要使用的欄位,並為這些欄位建構欄位遮罩:

  1. 使用 * 欄位遮罩要求所有欄位。
  2. 查看回應中的欄位階層,找出所需欄位。
  3. 使用上一步顯示的欄位階層,以以下格式建構欄位遮罩:

    topLevelField[.secondLevelField][.thirdLevelField][...]

舉例來說,如果路徑的部分回應如下:

"routes": [
    {
        "legs": [
            {  "steps": [
                    {"distanceMeters": 119},
                    {"distanceMeters": 41}  ]
            }
        ],
        "distanceMeters": 160
    }
]

如要只傳回路線路段的 distanceMeters 欄位 (也就是前一個範例中的最後一個 distanceMeters),欄位遮罩如下:

routes.legs.distanceMeters

如果想改為傳回路線路段中每個步驟的 distanceMeters 欄位,也就是上述範例中 steps 下方的 distanceMeters,欄位遮罩如下:

routes.legs.steps.distanceMeters

如要傳回這兩項資訊,並取得上述結果,欄位遮罩如下:

routes.legs.distanceMeters,routes.legs.steps.distanceMeters

欄位遮罩路徑範例

本節提供更多範例,說明如何在 REST 和 gRPC 呼叫中,將欄位路徑指定為回應欄位遮罩的一部分。

對 computeRoutes 的 REST 呼叫

在第一個範例中,您會使用 REST 呼叫 computeRoutes 方法來計算路線。在本例中,您在標頭中指定欄位遮罩,在回應中傳回路線 distanceMeters 和 duration 欄位。請記得在欄位名稱前加上 routes。

X-Goog-FieldMask: routes.distanceMeters,routes.duration

對 computeRouteMatrix 進行 REST 呼叫

針對用於計算路線矩陣的 REST computeRouteMatrix 方法,請在標頭中指定為每個起點和目的地組合傳回 originIndex、destinationIndex 和 duration:

X-Goog-FieldMask: originIndex,destinationIndex,duration

對 computeRoutes 的 gRPC 呼叫

針對用於計算路線的 gRPC computeRoutes 方法,設定包含回應欄位遮罩的變數,在回應中傳回路線 distanceMeters、duration 和編碼折線欄位。接著,您可以將該變數傳遞至要求:

const (
  fieldMask = "routes.distanceMeters,routes.duration,routes.polyline.encodedPolyline"
)

對 computeRouteMatrix 的 gRPC 呼叫

如要使用 gRPC computeRouteMatrix 方法計算路徑矩陣,請設定含有回應欄位遮罩的變數,為每個起點和目的地組合指定傳回 originIndex、destinationIndex 和 duration。接著,您可以將該變數傳遞至要求:

const (
  fieldMask = "originIndex,destinationIndex,duration"
)

欄位路徑注意事項

在回應中只加入您需要的欄位,即可只傳回您需要的欄位:

  • 縮短處理時間,以更低的延遲時間傳回結果。
  • 確保延遲效能穩定。如果您選取所有欄位,或是在頂層選取所有欄位,系統新增欄位並自動納入回應時,您可能會遇到效能下降的問題。
  • 縮減回應大小,進而提高網路處理量。
  • 確保您不會要求不必要的資料,避免不必要的處理時間和計費費用。

如要進一步瞭解如何建構欄位遮罩,請參閱 field_mask.proto。