- HTTP 请求
- 请求正文
- 响应正文
- 多段线质量
- 多段线编码
- 单位
- ReferenceRoute
- 额外计算
- 路线
- 路线标签
- RouteLeg
- 多段线
- RouteLegStep
- NavigationInstruction
- 操纵
- RouteLegStepTravelAdvisory
- RouteLegStepLocalizedValues
- RouteLegStepTransitDetails
- TransitStopDetails
- 公交站
- TransitDetailsLocalizedValues
- LocalizedTime
- 公交线路
- 公交公司
- 公交车
- TransitVehicle 类型
- RouteLegTravelAdvisory
- RouteLegLocalizedValues
- 步骤概览
- MultiModalSegment
- 视口
- RouteLocalizedValues
- GeocodingResults
- 地理位置编码航点
返回主路线和可选的备选路线(给定一组航点和中间航点)。
注意:此方法要求您在输入中指定响应字段掩码。您可以使用网址参数 $fields
或 fields
或者 HTTP/gRPC 标头 X-Goog-FieldMask
(请参阅可用的网址参数和标头)来提供响应字段掩码。值是以英文逗号分隔的字段路径列表。请参阅关于如何构建字段路径的详细文档。
例如,在此方法中:
- 所有可用字段的字段掩码(用于手动检查):
X-Goog-FieldMask: *
- 路线级时长、距离和多段线的字段掩码(生产设置示例):
X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.polyline.encodedPolyline
Google 不建议使用通配符 (*
) 响应字段掩码,也不建议在顶级 (routes
) 指定字段掩码,因为:
- 仅选择您需要的字段有助于服务器节省计算周期,从而以更短的延迟时间返回结果。
- 仅选择生产作业中的所需字段可确保延迟时间的稳定。我们将来可能会添加更多响应字段,这些新字段可能需要额外的计算时间。如果您选择所有字段,或者选择顶级的所有字段,则可能会遇到性能下降,因为我们添加的所有新字段都会自动包含在响应中。
- 仅选择您需要的字段可减小响应大小,从而提升网络吞吐量。
HTTP 请求
POST https://routes.googleapis.com/directions/v2:computeRoutes
网址采用 gRPC 转码语法。
请求正文
请求正文中包含结构如下的数据:
JSON 表示法 |
---|
{ "origin": { object ( |
字段 | |
---|---|
origin |
必需。出发地航点。 |
destination |
必需。目的地航点。 |
intermediates[] |
可选。路线沿途的一组航点(不包括终端点),用于在 经过或经过最多支持 25 个中间航点。 |
travelMode |
可选。指定交通方式。 |
routingPreference |
可选。指定如何计算路由。服务器尝试使用所选路由偏好设置来计算路由。如果路由偏好设置导致错误或过长的延迟时间,则返回错误。只有在 |
polylineQuality |
可选。指定多段线质量偏好。 |
polylineEncoding |
可选。指定多段线的首选编码。 |
departureTime |
可选。出发时间。如果您未设置此值,则此值默认为您发出请求的时间。注意:只有在 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,分辨率为纳秒,最多包含九个小数位。示例: |
arrivalTime |
可选。到达时间。注意:仅当 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,分辨率为纳秒,最多包含九个小数位。示例: |
computeAlternativeRoutes |
可选。指定是否除了路线之外,还要计算备选路线。系统不会为具有中间航点的请求返回备选路线。 |
routeModifiers |
可选。要满足的一组条件会影响路由的计算方式。 |
languageCode |
可选。BCP-47 语言代码,例如“en-US”或“sr-Latn”。如需了解详情,请参阅 http://www.unicode.org/reports/tr35/#Unicode_locale_identifier。如需查看支持的语言列表,请参阅语言支持。如果您未提供此值,系统将根据路线请求的位置推断显示语言。 |
regionCode |
可选。地区代码,指定为 ccTLD(“顶级域名”)双字符值。有关详情,请访问 https://zh.wikipedia.org/wiki/%E5%97%A0%E7%A0%81%E7%A0%81%E7%A0%81%E7%A0%81 |
units |
可选。指定显示字段的度量单位。这些字段在 |
optimizeWaypointOrder |
可选。如果设置为 true,则服务会尝试对指定的中间航点进行重新排序,以尽可能降低路线的总体费用。如果任何中间航点是 |
requestedReferenceRoutes[] |
可选。指定除了默认路由之外,您还将在请求中计算哪些引用路由。参考路由是与其默认路由不同的路线计算目标的路线。例如, |
extraComputations[] |
可选。可用于完成请求的额外计算列表。注意:这些额外的计算可能会在响应中返回额外的字段。您还必须在字段掩码中指定这些额外的字段,才能在响应中返回。 |
trafficModel |
可选。指定计算交通时间时要使用的假设条件。此设置会影响 |
transitPreferences |
可选。指定会影响 |
响应正文
v2.computeRoutes 响应消息。
如果成功,响应正文将包含结构如下的数据:
JSON 表示法 |
---|
{ "routes": [ { object ( |
字段 | |
---|---|
routes[] |
包含一个计算路线数组(最多指定 3 个),在您指定 compute_alternatives_routes 时包含一个;如果未指定,则包含一个路线。当此数组包含多个条目时,第一条是推荐路线。如果数组为空,则表示无法找到路线。 |
fallbackInfo |
在某些情况下,当服务器无法根据所有输入偏好设置计算路由结果时,可能会回退到其他计算方式。使用回退模式时,此字段包含有关回退响应的详细信息。否则,此字段将未设置。 |
geocodingResults |
包含指定为地址的航点的地理编码响应信息。 |
多段线质量
指定多段线质量的一组值。
枚举 | |
---|---|
POLYLINE_QUALITY_UNSPECIFIED |
未指定多段线质量偏好设置。默认为 OVERVIEW 。 |
HIGH_QUALITY |
指定高品质多段线,它采用的点数多于 OVERVIEW ,但代价是响应会增加。如果需要更高的精确度,请使用此值。 |
OVERVIEW |
指定概览多段线,用少量点组成该多段线。显示路由概览时,请使用此值。与使用 HIGH_QUALITY 选项相比,使用此选项的请求延迟时间更短。 |
多段线编码
指定要返回的多段线的首选类型。
枚举 | |
---|---|
POLYLINE_ENCODING_UNSPECIFIED |
未指定多段线类型偏好设置。默认为 ENCODED_POLYLINE 。 |
ENCODED_POLYLINE |
用于指定使用多段线编码算法编码的多段线。 |
GEO_JSON_LINESTRING |
使用 GeoJSON LineString 格式指定多段线 |
单位
一组值,用于指定显示屏中使用的度量单位。
枚举 | |
---|---|
UNITS_UNSPECIFIED |
未指定度量单位。默认为根据请求推断出的计量单位。 |
METRIC |
度量单位。 |
IMPERIAL |
英制度量单位(英制)。 |
ReferenceRoute
ComputeRoutesRequest 上支持的参考路由。
枚举 | |
---|---|
REFERENCE_ROUTE_UNSPECIFIED |
未使用。包含此值的请求失败。 |
FUEL_EFFICIENT |
最省油路线。标有此值的路线已确定针对参数(例如燃油消耗)进行了优化。 |
额外计算
在完成请求时执行的额外计算。
枚举 | |
---|---|
EXTRA_COMPUTATION_UNSPECIFIED |
未使用。包含此值的请求将会失败。 |
TOLLS |
路线的收费信息。 |
FUEL_CONSUMPTION |
路线的预计燃料消耗量。 |
TRAFFIC_ON_POLYLINE |
路线的可感知多段线。 |
HTML_FORMATTED_NAVIGATION_INSTRUCTIONS |
导航说明以带格式的 HTML 文本字符串表示。此内容应按原样阅读。此内容仅供显示。请勿以程序化方式对其进行解析。 |
路线
包含一条路线,其中包含一系列连接起点、终点和中间航点的相连路段。
JSON 表示法 |
---|
{ "routeLabels": [ enum ( |
字段 | |
---|---|
routeLabels[] |
|
legs[] |
构成路线的一段路程(航点之间的路径段)集合。每段路程均对应于两个非 |
distanceMeters |
路线的行程距离(以米为单位)。 |
duration |
浏览路线所需的时长。如果您将 以秒为单位表示的时长,最多包含九个小数位,以“ |
staticDuration |
路线的行程时长,而不考虑路况。 以秒为单位表示的时长,最多包含九个小数位,以“ |
polyline |
整体路线多段线。此多段线是所有 |
description |
路线的说明。 |
warnings[] |
显示路线时显示的警告数组。 |
viewport |
多段线的视口边界框。 |
travelAdvisory |
有关路线的其他信息。 |
optimizedIntermediateWaypointIndex[] |
如果您将 |
localizedValues |
|
routeToken |
可传递到 Navigation SDK 的 base-44 编码网络令牌,允许 Navigation SDK 在导航期间重建路线,并在重新规划路线时调用 v2.computeRoutes,以遵循您最初创建路线时的意图。客户应将此令牌视为不透明 blob。它不适用于读取或更改。注意: |
路线标签
Route
的标签,可用于识别路线要与其他属性进行比较。
枚举 | |
---|---|
ROUTE_LABEL_UNSPECIFIED |
默认 - 未使用。 |
DEFAULT_ROUTE |
路由计算返回的默认“最佳”路由。 |
DEFAULT_ROUTE_ALTERNATE |
默认“最佳”路线的替代方案。指定 computeAlternativeRoutes 后,系统将返回此类路由。 |
FUEL_EFFICIENT |
最省油路线。标有此值的路线已确定针对节能参数(如燃油消耗)进行了优化。 |
航线
包含非 via
航点之间的路段。
JSON 表示法 |
---|
{ "distanceMeters": integer, "duration": string, "staticDuration": string, "polyline": { object ( |
字段 | |
---|---|
distanceMeters |
路线路程的行程距离(以米为单位)。 |
duration |
浏览腿部所需的时间。如果 以秒为单位表示的时长,最多包含九个小数位,以“ |
staticDuration |
一段路程的持续时间,计算时不会考虑路况条件。 以秒为单位表示的时长,最多包含九个小数位,以“ |
polyline |
此路程的整体多段线,包括每个 |
startLocation |
这段路程的起始位置。此位置可能与提供的 |
endLocation |
这段路程的结束位置。此位置可能与提供的 |
steps[] |
表示此路程段内的路段的步骤数组。每个步骤代表一项导航指令。 |
travelAdvisory |
包含应告知路由的其他信息,例如可能的路况限制。 |
localizedValues |
|
stepsOverview |
有关此 |
Polyline
封装编码多段线。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 polyline_type 。封装多段线的类型。默认为 encoded_serif。polyline_type 只能是下列其中一项: |
|
encodedPolyline |
使用多段线编码算法对多段线进行字符串编码 |
geoJsonLinestring |
使用 GeoJSON LineString 格式指定多段线 |
路线步数
包含 RouteLeg
的一段。一个步骤对应于单个导航指令。航段由多个路段组成。
JSON 表示法 |
---|
{ "distanceMeters": integer, "staticDuration": string, "polyline": { object ( |
字段 | |
---|---|
distanceMeters |
此路段的行程距离(以米为单位)。在某些情况下,此字段可能没有值。 |
staticDuration |
该路段的行程时长,而不考虑路况。在某些情况下,此字段可能没有值。 以秒为单位表示的时长,最多包含九个小数位,以“ |
polyline |
与此步骤相关的多段线。 |
startLocation |
此步骤的起始位置。 |
endLocation |
此步骤的结束位置。 |
navigationInstruction |
导航说明。 |
travelAdvisory |
包含应让用户知道的其他信息,例如可能在路段上经过的路况限制。 |
localizedValues |
|
transitDetails |
在出行方式为 |
travelMode |
用于此步骤的出行方式。 |
Maneuver
一组值,用于指定应对当前步骤采取的导航操作(例如左转、合并、直线等)。
枚举 | |
---|---|
MANEUVER_UNSPECIFIED |
未使用。 |
TURN_SLIGHT_LEFT |
稍微向左转。 |
TURN_SHARP_LEFT |
向左快速转动。 |
UTURN_LEFT |
向左调头。 |
TURN_LEFT |
左转。 |
TURN_SLIGHT_RIGHT |
稍微向右转。 |
TURN_SHARP_RIGHT |
向右向右急速转动。 |
UTURN_RIGHT |
右转调头。 |
TURN_RIGHT |
向右转。 |
STRAIGHT |
直走。 |
RAMP_LEFT |
走左侧坡道。 |
RAMP_RIGHT |
请走右侧坡道。 |
MERGE |
并入流量。 |
FORK_LEFT |
请向左叉。 |
FORK_RIGHT |
使用右叉。 |
FERRY |
乘坐轮渡。 |
FERRY_TRAIN |
搭乘列车前往渡轮。 |
ROUNDABOUT_LEFT |
在环岛处左转。 |
ROUNDABOUT_RIGHT |
在环岛处右转。 |
DEPART |
初始操作。 |
NAME_CHANGE |
用于表示街道名称更改。 |
RouteLegStepTravelAdvisory
包含应通知用户的其他信息,例如路程路段可能受到的流量限制。
JSON 表示法 |
---|
{
"speedReadingIntervals": [
{
object ( |
字段 | |
---|---|
speedReadingIntervals[] |
注意:此字段目前没有填充。 |
RouteLegStepLocalizedValues
特定属性的文本表示形式。
JSON 表示法 |
---|
{ "distance": { object ( |
字段 | |
---|---|
distance |
以文本形式表示的旅行距离。 |
staticDuration |
不考虑路况信息的时长,以文本形式表示。 |
RouteLegStepTransitDetails
与 TRANSIT
路线相关的 RouteLegStep
的其他信息。
JSON 表示法 |
---|
{ "stopDetails": { object ( |
字段 | |
---|---|
stopDetails |
相应路段的到达和出发站信息。 |
localizedValues |
|
headsign |
指定该线路在车辆或出发站上行驶的方向。前往终点通常是终点站。 |
headway |
将预计时间设为目前同一车站各次发车之间的间隔时长。例如,如果行驶间隔为 600 秒,那么如果您错过了一班公交,那么预计需要 10 分钟才能等到下一班。 以秒为单位表示的时长,最多包含九个小数位,以“ |
transitLine |
关于此步骤中使用的公交线路的信息。 |
stopCount |
从出发到到达的经停次数。此计数包含到达站,但不含出发站。例如,如果您的路线从 A 站出发,途经 B 站和 C 站,最终到达 D 站,则 stopCount 将返回 3。 |
tripShortText |
时刻表和登机牌上显示的文字,用于标识乘客的公交行程。文字应在服务期内唯一标识行程。例如,“538”是 Amtrak 列车的 |
公交站点详细信息
有关RouteLegStep
的公交站的详细信息
JSON 表示法 |
---|
{ "arrivalStop": { object ( |
字段 | |
---|---|
arrivalStop |
相应路段的到达站点的相关信息。 |
arrivalTime |
该路段预计到达时间。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,分辨率为纳秒,最多包含九个小数位。示例: |
departureStop |
相应路段的出发站信息。 |
departureTime |
相应路段的预计出发时间。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,分辨率为纳秒,最多包含九个小数位。示例: |
公交站
公交站的相关信息。
JSON 表示法 |
---|
{
"name": string,
"location": {
object ( |
字段 | |
---|---|
name |
公交站的名称。 |
location |
经停点(以纬度/经度坐标表示)。 |
公交详细信息本地化值
RouteTransitDetails 值的本地化说明。
JSON 表示法 |
---|
{ "arrivalTime": { object ( |
字段 | |
---|---|
arrivalTime |
采用相应文本表示法表示的时间(包含相应的时区)。 |
departureTime |
采用相应文本表示法表示的时间(包含相应的时区)。 |
本地化时间
时间的本地化说明。
JSON 表示法 |
---|
{
"time": {
object ( |
字段 | |
---|---|
time |
以字符串形式指定的时间。 |
timeZone |
包含时区。该值就是 IANA 时区数据库中定义的时区的名称,例如“America/New_York”。 |
公交线路
包含此路段中所用公交线路的相关信息。
JSON 表示法 |
---|
{ "agencies": [ { object ( |
字段 | |
---|---|
agencies[] |
此公交线路运营的公交公司。 |
name |
此公交线路的全名,例如“长安路 8 号”。 |
uri |
由公交公司提供的该公交线路的 URI。 |
color |
此线路站牌常用的颜色。以十六进制表示。 |
iconUri |
与此线路相关联的图标的 URI。 |
nameShort |
此公交线路的简称。该名称通常是线路编号,例如“M7”或“355”。 |
textColor |
此线路标识牌上常用的文字颜色。以十六进制表示。 |
vehicle |
此公交线路运营的交通工具类型。 |
公交公司
运营公交线路的公交公司。
JSON 表示法 |
---|
{ "name": string, "phoneNumber": string, "uri": string } |
字段 | |
---|---|
name |
此公交公司的名称。 |
phoneNumber |
公交公司的语言区域专用电话号码。 |
uri |
公交公司的 URI。 |
公交车
公交路线中所用车辆的相关信息。
JSON 表示法 |
---|
{ "name": { object ( |
字段 | |
---|---|
name |
此车辆的名称(首字母大写)。 |
type |
所用交通工具的类型。 |
iconUri |
与此车辆类型相关联的图标的 URI。 |
localIconUri |
根据当地交通标识牌,与该交通工具类型相关联的图标的 URI。 |
公交类型
公交路线的交通工具类型。
枚举 | |
---|---|
TRANSIT_VEHICLE_TYPE_UNSPECIFIED |
未使用。 |
BUS |
公交车。 |
CABLE_CAR |
一种靠电缆运行的交通工具,通常在地面上行驶。空中缆车可以算作 GONDOLA_LIFT 类型。 |
COMMUTER_TRAIN |
通勤铁路。 |
FERRY |
轮渡。 |
FUNICULAR |
一种由缆线拉上陡坡的交通工具。索道缆车通常由两个车体组成,彼此作为对方的平衡重物。 |
GONDOLA_LIFT |
空中缆车 |
HEAVY_RAIL |
重轨。 |
HIGH_SPEED_TRAIN |
高速列车。 |
INTERCITY_BUS |
长途客车。 |
LONG_DISTANCE_TRAIN |
长途列车。 |
METRO_RAIL |
轻轨交通。 |
MONORAIL |
单轨。 |
OTHER |
所有其他车辆。 |
RAIL |
铁路。 |
SHARE_TAXI |
合乘出租车是一种可在其运行路线上随处上下乘客的公共汽车。 |
SUBWAY |
地下轻轨。 |
TRAM |
地上轻轨。 |
TROLLEYBUS |
无轨电车。 |
航线旅行咨询
包含应告知用户的路程路段额外信息,如可能的路况限制。
JSON 表示法 |
---|
{ "tollInfo": { object ( |
字段 | |
---|---|
tollInfo |
包含特定 |
speedReadingIntervals[] |
详细介绍流量密度的速度读取间隔。适用于 例如:
|
RouteLegLocalizedValues
特定属性的文本表示形式。
JSON 表示法 |
---|
{ "distance": { object ( |
字段 | |
---|---|
distance |
以文本形式表示的旅行距离。 |
duration |
考虑流量条件的时长(以文本形式表示)。注意:如果您未请求流量信息,此值将与 staticDuration 的值相同。 |
staticDuration |
不考虑路况信息的时长,以文本形式表示。 |
步骤概览
提供关于 RouteLegStep
列表的概览信息。
JSON 表示法 |
---|
{
"multiModalSegments": [
{
object ( |
字段 | |
---|---|
multiModalSegments[] |
总结了 |
MultiModalSegment
提供 RouteLeg.steps
的不同多模态分段的汇总信息。多模态段定义为一个或多个具有相同 RouteTravelMode
的连续 RouteLegStep
。如果 RouteLeg
的步骤中不包含任何多模态细分,则不会填充此字段。
JSON 表示法 |
---|
{ "navigationInstruction": { object ( |
字段 | |
---|---|
navigationInstruction |
多模态细分的 NavigationInstruction。 |
travelMode |
多模式车段的出行方式。 |
stepStartIndex |
对应的多模态分段起点所对应的 |
stepEndIndex |
对应的 |
视口
纬度-经度视口,表示两个对角线对角的 low
和 high
点。视口会被视为封闭区域,即其边界。纬度边界必须介于 -90 度(含)到 90 度(含)之间,经度范围必须介于 -180 度(含)到 180 度(含)之间。各种情况包括:
如果
low
=high
,则视口由该单个点组成。如果
low.longitude
>high.longitude
,则经度范围会反转(视口会跨越 180 度经度线)。如果
low.longitude
= -180 度,high.longitude
= 180 度,则视口包含所有经度。如果
low.longitude
= 180 度,high.longitude
= -180 度,则经度范围为空。如果
low.latitude
>high.latitude
,则纬度范围为空。
必须填充 low
和 high
,且表示的方框不能为空(如以上定义所指定)。视口为空将导致错误。
例如,此视口完全包含纽约市:
{ "low": { "纬度": 40.477398, "经度": -74.259087 }, "high": { "纬度": 40.91618, "经度": -73.70018}
JSON 表示法 |
---|
{ "low": { object ( |
字段 | |
---|---|
low |
必需。视口的低点。 |
high |
必需。视口的高点。 |
RouteLocalizedValues
特定属性的文本表示形式。
JSON 表示法 |
---|
{ "distance": { object ( |
字段 | |
---|---|
distance |
以文本形式表示的旅行距离。 |
duration |
考虑流量条件的持续时间,以文本形式表示。注意:如果您未请求流量信息,此值将与 staticDuration 的值相同。 |
staticDuration |
不考虑路况信息的时长,以文本形式表示。 |
transitFare |
公交价格以文本形式表示。 |
地理编码结果
包含 GeocodedWaypoints
、出发地、目的地和中间航点。仅针对地址航点填充。
JSON 表示法 |
---|
{ "origin": { object ( |
字段 | |
---|---|
origin |
经过地理编码的航点。 |
destination |
目的地经过地理编码的航点。 |
intermediates[] |
一个经过地理编码的中间航点列表,其中每个航点都有一个索引字段,对应按照航点指定的请求顺序(从零开始)。 |
经过地理编码的航点
用作航点的位置的详细信息。仅针对地址航点填充。包含有关地理编码结果的详细信息,用于确定该地址经过地理编码。
JSON 表示法 |
---|
{
"geocoderStatus": {
object ( |
字段 | |
---|---|
geocoderStatus |
表示地理编码操作生成的状态代码。 |
type[] |
结果的类型,采用零个或多个类型标记的形式。支持的类型:https://developers.google.com/maps/documentation/Geocoding/requests-Geocoding#Types |
partialMatch |
表示地理编码器无法返回与原始请求完全匹配的结果,但能够匹配所请求地址的一部分。您不妨检查一下原始请求中是否有拼写错误和/或地址不完整的情况。 |
placeId |
此结果的地点 ID。 |
intermediateWaypointRequestIndex |
请求中相应中间航点的索引。仅当相应的航点是中间航点时填充。 |