指定路由的位置

要计算路线,您必须至少指定路线的位置 出发地和路线目的地。您可以在以下位置将这些位置定义为航点: 。

除了出发地和目的地外,您还可以指定不同类型的 航点以及如何处理路线的航点。如需更多信息和 示例,请参阅以下主题:

为路线指定位置

您可以通过创建 Waypoint (REST) 来表示营业地点 或 Waypoint (gRPC) 对象。在 航点定义时,可以采用以下任意方式指定位置:

您可以用相同的方式为请求中的所有航点指定位置, 也可以混合使用例如,您可以使用纬度/经度坐标 起点航点并使用地点 ID 作为目的地航点。

为提高效率和准确性,请使用地点 ID 而非纬度/经度 坐标或地址字符串。地点 ID 具有明确的唯一性, 例如,接入点和交通变量等,可带来地理编码方面的优势。他们 有助于避免可能由其他方法 指定位置:

  • 使用经纬度坐标可能会导致位置 沿这些坐标系的道路(该坐标可能不是 或者是快速或安全的道路, 指向目标网址。
  • 若要转换地址字符串,必须先由 Routes API 进行地理编码 转换为纬度/经度坐标,然后才能计算路线。 这种转化可能会影响效果。

将营业地点指定为地点 ID

您可以使用地点 ID 来指定航点的位置。因为 纬度和经度坐标与道路对应,您可能会发现 在某些情况下,地点 ID 可提供更好的结果。

通过 Geocoding API 检索地点 ID,并 Places API(包括 Place 自动补全)。有关地点 ID 的更多信息,请参阅 地点 ID 概览

以下示例使用 placeId 属性为二者传递地点 ID origindestination

{
  "origin":{
    "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o"
  },
  "destination":{
    "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU"
  },
  ...
}

以经纬度坐标的形式指定位置

要定义航点中的位置,请指定 位置 (REST)Location(gRPC):使用 纬度/经度坐标。

例如,为路线 origindestination 指定航点 使用 latitudelongitude 坐标:

{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 37.419734,
        "longitude": -122.0827784
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
        "latitude": 37.417670,
        "longitude": -122.079595
      }
    }
  },
...
}

以地址字符串的形式指定位置

地址字符串是以字符串表示的文本地址(例如“1600”) ”)。地理编码是 将地址字符串转换为纬度和经度坐标(例如 纬度 37.423021,经度 -122.083739)。

如果您将地址字符串作为航点的位置传递,Routes API 在内部对字符串进行地理编码,以将其转换为经纬度 坐标。

例如,要计算路线,您需要为路线 origin 指定一个航点, 使用地址字符串的 destination

{
  "origin":{
    "address": "1600 Amphitheatre Parkway, Mountain View, CA"
  },
  "destination":{
    "address": "450 Serra Mall, Stanford, CA 94305, USA"
  },
  ...
}

在此示例中,Routes API 会对这两个地址进行地理编码,以将其转换为 纬度和经度坐标。

如果地址值不明确,则 Routes API 可能会调用 区分相似的地址。例如:“第一街”可以是 “1st street NE”的完整值或部分值或“1st St SE”。本次 可能与 Geocoding API 返回的结果不同。您可以避免 误解。

设置地址的区域

如果您将不完整的地址字符串作为航点的位置,API 可能使用了错误的地理编码纬度/经度坐标。例如: 您发出一个指定“托莱多”的请求为起点,将“Madrid”用作 为驾车路线的目的地:

{
  "origin":{
    "address": "Toledo"
  },
  "destination":{
    "address": "Madrid"
  },
  "travelMode": "DRIVE"
}

在这个例子中,“Toledo”解释为位于美国的 美国的俄亥俄州,而非西班牙。因此,该请求会返回 空数组,表示不存在路由:

{
  []
}

您可以将 API 配置为通过以下方法返回偏向于特定区域的结果: 包括 regionCode 参数。此参数将区域代码指定为 ccTLD(“顶级域名”) 两个字符的值。大多数 ccTLD 代码都与 ISO 3166-1 代码相同, 一些值得注意的例外情况。例如,英国的 ccTLD 为“uk” (.co.uk),而其 ISO 3166-1 代码为“gb”(技术上适用于“ 英国”)。

“托莱多”的路线请求飞往“马德里”包含 regionCode 参数会返回相应的结果,因为“Toledo”会被解释为 西班牙的城市:

{
  "origin":{
    "address": "Toledo"
  },
  "destination":{
    "address": "Madrid"
  },
  "travelMode": "DRIVE",
  "regionCode": "es"
}

响应现在包含从西班牙托莱多计算出的路线 西班牙马德里:

{
  "routes": [
    {
      "distanceMeters": 75330,
      "duration": "4137s",
      ...
    }
  ]
}

以 Plus Code 形式指定位置

许多人没有精确的地址,这让他们很难知道 以便接收货物。或者,有地址的用户可能更愿意接受 在更具体的地点提供送货服务,例如后门或物品加载区 。

Plus Codes 就像是没有 实际地址使用 Plus Codes,而不是包含街道名称和门牌号的地址 基于纬度/经度坐标,以数字和 字母。

Google 开发了 Plus 代码 让每个人都能享受地址带来的便利Plus Code 是一种编码 通过纬度/经度坐标推导的位置参考, 表示面积:1/8000 度 x 1/8000 度(约 14 米 x 赤道 14 米)或更小。你可以使用 Plus Codes 来替代 没有提供街道地址或没有建筑物所在地的街道地址 未给街道编号或街道命名。

Plus Code 必须采用全局代码或复合代码格式:

  • 全局代码由 4 个字符的区号和 6 个字符组成, 字符或更长的本地代码

    例如,对于地址“1600 Amphitheatre Parkway, Mountain View, CA”,全局代码是“849V”本地代码是 “CWC8+R9”。然后使用完整的 10 个字符的 Plus Code 指定 位置值设为“849VCWC8+R9”。

  • 复合代码由至少 6 个字符组成 与显式位置相结合的本地代码

    例如,地址“450 Serra” Mall, Stanford, CA 94305, USA”本地代码为“CRHJ+C3”。对于化合物 将本地代码与城市、州/省/自治区/直辖市、邮政编码以及国家/地区组合起来 “CRHJ+C3 Stanford, CA 94305, USA”形式的地址部分。

    例如,通过为路线 origin 指定航点来计算路线 和 destination(使用 Plus Codes):

    {
      "origin":{
        "address": "849VCWC8+R9"
      },
      "destination":{
        "address": "CRHJ+C3 Stanford, CA 94305, USA"
      },
      "travelMode": "DRIVE"
    }

Google Maps Platform API 均支持 Plus Code,包括 地点自动补全地点详情Directions APIGeocoding API。 例如,您可以使用 Geocoding API 对 (通过纬度/经度坐标指定) 营业地点的 Plus Code。