You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Routes API:公交模式下指定字段掩码返回空响应

问题描述

调用Google Routes API的computeRoutes接口时,设置travelMode: TRANSIT,通过字段掩码routes.legs.steps.startLocation或routes.legs.steps.endLocation请求数据,返回的steps为空对象;但使用字段掩码*时,能正常看到对应位置数据。

示例请求:

curl -X POST "https://routes.googleapis.com/directions/v2:computeRoutes" \
    -H "Content-Type: application/json" \
    -H "X-Goog-FieldMask: routes.legs.steps.endLocation" \
    -H "X-Goog-Api-Key: API_KEY" \
    -d '{
        "origin": {
            "location": {
                "latLng": {
                    "latitude": 40.748817,
                    "longitude": -73.985428
                }
            }
        },
        "destination": {
            "location": {
                "latLng": {
                    "latitude": 40.758896,
                    "longitude": -73.985130
                }
            }
        },
        "travelMode": "TRANSIT"
    }'

响应结果:

{
  "routes": [
    {
      "legs": [
        {
          "steps": [
            {},
            {},
            {},
            {},
            {},
            {},
            {}
          ]
        }
      ]
    }
  ]
}
解决方案

这个问题源于TRANSIT模式下,路线步骤(steps)是多态结构(包含步行、公交换乘等不同类型),Google Routes API需要识别步骤的核心类型标识,才能正确返回嵌套的位置数据,仅单独请求位置字段会导致API无法匹配对应数据结构,返回空对象。

可通过以下两种方式解决:

  1. 同时请求步骤类型与位置字段
    调整字段掩码,加入步骤的类型标识字段travelMode,示例请求:
curl -X POST "https://routes.googleapis.com/directions/v2:computeRoutes" \
    -H "Content-Type: application/json" \
    -H "X-Goog-FieldMask: routes.legs.steps.startLocation,routes.legs.steps.endLocation,routes.legs.steps.travelMode" \
    -H "X-Goog-Api-Key: API_KEY" \
    -d '{
        "origin": {
            "location": {
                "latLng": {
                    "latitude": 40.748817,
                    "longitude": -73.985428
                }
            }
        },
        "destination": {
            "location": {
                "latLng": {
                    "latitude": 40.758896,
                    "longitude": -73.985130
                }
            }
        },
        "travelMode": "TRANSIT"
    }'
  1. 请求步骤下的全部核心字段
    使用更宽泛的字段掩码routes.legs.steps,直接获取步骤的所有核心数据:
curl -X POST "https://routes.googleapis.com/directions/v2:computeRoutes" \
    -H "Content-Type: application/json" \
    -H "X-Goog-FieldMask: routes.legs.steps" \
    -H "X-Goog-Api-Key: API_KEY" \
    -d '{
        "origin": {
            "location": {
                "latLng": {
                    "latitude": 40.748817,
                    "longitude": -73.985428
                }
            }
        },
        "destination": {
            "location": {
                "latLng": {
                    "latitude": 40.758896,
                    "longitude": -73.985130
                }
            }
        },
        "travelMode": "TRANSIT"
    }'

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 20:34:53