设置途经点

欧洲经济区 (EEA) 开发者

默认情况下,该 API 会将中间途经点视为路线上的停靠点。不过,您可以将中间途经点配置为直达途经点 via,车辆会直接通过该途经点,而不会停下来。

使用途经点来规划或调整特定路线。与将路线拆分为单独的上车或下车经停点不同,途经航点会强制路由引擎在前往目的地的途中经过特定位置,例如,遵循首选路段或避开已知危险。

包含出发地、一个或多个途经中间航点和目的地的路线仅包含一条路程,该路程将出发地直接连接到目的地。

如需将中间途经点配置为直通途经点,请在 REST Waypoint 资源或 gRPC Waypoint 消息中将途经点的 via 属性设置为 true。

虽然 Routes API 接受地址、地点 ID 以及纬度和经度坐标,但纬度和经度(即 latLng)坐标可为途经途经点提供最精确的路线调整。

当您通过在地图上拖动途经点来创建路线时,via 属性最为有效。这种方法可让您实时查看最终路线,并帮助您将途经点放置在易于到达的位置。

示例:设置传递途径点

以下示例演示了如何在完整的 computeRoutes POST 请求中对中间航点设置 "via": true:

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
  "intermediates": [
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

将地址或地点 ID 用于途经点

虽然我们建议使用纬度和经度坐标来实现精确的直通路由,但您也可以使用地址字符串或地点 ID 来指定中间途经点。

如果您为途经点使用地址或地点 ID,API 会对位置进行插值,并将其贴靠到最近的可导航道路上。与确切的坐标相比,此道路贴合流程有时会导致路线出现变化或不准确。

如果您使用地址字符串或 Plus Code 指定途经点,API 会对相应位置进行地理编码,并在响应的 geocodingResults.intermediates 数组中返回匹配的地点 ID。

对于 intermediates 数组中的每个元素,请使用 intermediateWaypointRequestIndex 属性来确定请求中的哪个中间航点对应于响应中的地点 ID。

示例:为途经途经点请求地点 ID

以下示例展示了一个包含三个直通中间途经点的请求,每个途经点都指定了 "via": true:

curl -X POST -d '{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "24 Willie Mays Plaza, San Francisco, CA 94107"
  },
  "intermediates": [
    {
      "address": "450 Serra Mall, Stanford, CA 94305, USA",
      "via": true
    },
    {
      "location":{
        "latLng":{
          "latitude": 37.419734,
          "longitude": -122.0807784
        }
      },
      "via": true
    },
    {
      "address": "1836 El Camino Real, Redwood City, CA 94063",
      "via": true
    }
  ],
  "travelMode": "DRIVE"
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: YOUR_API_KEY' \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,geocodingResults' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

响应中包含 geocodingResults 数组,其中包含出发地、目的地以及您在请求索引 0 和索引 2 处按地址指定的两个中间航点的地点 ID。由于您使用纬度和经度坐标指定了索引为 1 的中间航点,因此该 API 会从 geocodingResults 中省略该航点:

{
  "routes": [
    {
      "distanceMeters": 54200,
      "duration": "2400s",
      "legs": [
        {
          "distanceMeters": 54200,
          "duration": "2400s",
          "startLocation": {
            "latLng": {
              "latitude": 37.4220,
              "longitude": -122.0841
            }
          },
          "endLocation": {
            "latLng": {
              "latitude": 37.7786,
              "longitude": -122.3893
            }
          }
        }
      ]
    }
  ],
  "geocodingResults": {
    "origin": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJj38IfwK6j4ARNcyPDnEGa9g"
    },
    "destination": {
      "geocoderStatus": {},
      "type": [
        "premise"
      ],
      "placeId": "ChIJI7ES6tl_j4ARVpDZoXbWAiY"
    },
    "intermediates": [
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 0,
        "type": [
          "street_address"
        ],
        "placeId": "ChIJvdLMGyq7j4ARScE5tWX_C0Y"
      },
      {
        "geocoderStatus": {},
        "intermediateWaypointRequestIndex": 2,
        "type": [
          "premise"
        ],
        "placeId": "ChIJkTc0GKajj4AR9UMsOSHwGD0"
      }
    ]
  }
}