请求其他路线

默认情况下,Routes API 会返回 default 路线,这通常是从出发地到目的地的最快路线。当您请求备用路由时,API 最多返回三个路由以及默认路由。然后,您的客户可以选择最符合其需求的路线。

请求替代路由时的注意事项

如需请求替代路由,请注意以下注意事项:

  • 您只能为没有中间航点的路线请求备选路线。在路线指定了中间航点时请求备选路线不会导致错误。但是,不会返回备用路由。

  • 响应最多包含三条备选路线。但是,有时没有备用路由可用,因此响应仅包含默认路由。

  • 由于计算替代路由需要进行额外的处理,因此请求替代路由可能会增加 API 的响应时间。

备选路由请求示例

computeAlternativeRoutes 设置为 true 可请求备选路线。以下示例展示了如何在 computeRoutes 方法 (REST) 请求中请求备用路由。

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude":42.340173523716736,
        "longitude":-71.05997968330408
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude":42.075698891472804,
        "longitude": -72.59806562080408
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference":"TRAFFIC_AWARE",
  "computeAlternativeRoutes": true
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

在此示例中,您指定一个字段掩码,使响应仅包含每个路由的 durationdistanceMeters,routeLabels 属性。然后,客户可以根据该信息选择采用哪条路线。如需了解详情,请参阅选择要返回的信息

备选路由响应示例

在响应中,使用 routeLabels 数组属性来标识覆盖面路由:

  • 对于默认路线,routeLabels 属性包含 DEFAULT_ROUTE

  • 对于任何备选路线,routeLabels 属性都包含 DEFAULT_ROUTE_ALTERNATE

在此示例中,响应包含默认路由和两个备用路由。请注意,每个路线的 durationdistanceMeters 属性的值各不相同:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}

在响应中添加多段线

为了方便用户选择路线,请将每条路线的多段线添加到响应中。然后,您可以在地图上显示每条多段线。

如需添加多段线,请在字段掩码中添加 routes.polyline

-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeLabels,routes.polyline'

然后,响应中包含每条路线的多段线:

{
  "routes": [
    {
      "distanceMeters": 150322,
      "duration": "5309s",
      "polyline": {
        "encodedPolyline": "mrlaGtavpLPLBTm…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE"
      ]
    },
    {
      "distanceMeters": 157614,
      "duration": "6879s",
      "polyline": {
        "encodedPolyline": "DmEd`@e@pCo@pCs@z…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    },
    {
      "distanceMeters": 189311,
      "duration": "7376s",
      "polyline": {
        "encodedPolyline": "FVLL|Af@HPAV…PgA^qC"
      },
      "routeLabels": [
        "DEFAULT_ROUTE_ALTERNATE"
      ]
    }
   ]
}