- HTTP 请求
- 请求正文
- 响应正文
- PolylineQuality
- PolylineEncoding
- ReferenceRoute
- ExtraComputation
- 路由
- RouteLabel
- RouteLeg
- Polyline
- RouteLegStep
- NavigationInstruction
- 车辆避让操作
- RouteLegStepTravelAdvisory
- RouteLegStepLocalizedValues
- RouteLegStepTransitDetails
- TransitStopDetails
- TransitStop
- TransitDetailsLocalizedValues
- LocalizedTime
- TransitLine
- TransitAgency
- TransitVehicle
- TransitVehicleType
- RouteLegTravelAdvisory
- RouteLegLocalizedValues
- StepsOverview
- MultiModalSegment
- 视口
- RouteLocalizedValues
- GeocodingResults
- GeocodedWaypoint
给定一组终点和中间航点,返回主要路线以及可选的备用路线。
注意:此方法要求您在输入中指定响应字段掩码。您可以使用网址参数 $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 个中间航点。 |
travel |
可选。指定交通方式。 |
routing |
可选。指定如何计算路线。服务器会尝试使用所选的路由偏好设置来计算路由。如果路由偏好设置导致错误或延迟时间过长,则会返回错误。只有当 |
polyline |
可选。指定多段线的质量偏好设置。 |
polyline |
可选。指定多段线的首选编码。 |
departure |
可选。出发时间。如果您未设置此值,则此值默认为您发出请求的时间。注意:只有在将 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
arrival |
可选。到达时间。注意:仅当 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
compute |
可选。指定是否应计算路线以外的备选路线。对于包含中间航点的请求,系统不会返回备选路线。 |
route |
可选。一组需要满足的条件,这些条件会影响路线的计算方式。 |
language |
可选。BCP-47 语言代码,例如“en-US”或“sr-Latn”。如需了解详情,请参阅 Unicode 语言区域标识符。如需查看支持的语言列表,请参阅语言支持。如果您未提供此值,系统会根据路线请求的位置推断显示语言。 |
region |
可选。地区代码,指定为一个 ccTLD(“顶级域名”)双字符值。如需了解详情,请参阅国家/地区代码顶级域名。 |
units |
可选。指定显示字段的衡量单位。这些字段包括 |
optimize |
可选。如果设置为 true,该服务会尝试通过重新排列指定的中间航点来最大限度地降低路线的总费用。如果任何中间航点是 |
requested |
可选。除了默认路线之外,指定请求中要计算的参考路线。参考路线是指与默认路线具有不同路线计算目标的路线。例如, |
extra |
可选。可能用于完成请求的额外计算列表。注意:这些额外的计算可能会在响应中返回额外的字段。这些额外的字段还必须在要返回的字段掩码中指定。 |
traffic |
可选。指定计算交通时间时所用的假设条件。此设置会影响 |
transit |
可选。指定影响为 |
响应正文
v2.computeRoutes 响应消息。
如果成功,响应正文将包含结构如下的数据:
JSON 表示法 |
---|
{ "routes": [ { object ( |
字段 | |
---|---|
routes[] |
如果您指定了 |
fallback |
在某些情况下,如果服务器无法使用所有输入偏好设置计算路线结果,则可能会回退到使用其他计算方式。使用回退模式时,此字段包含有关回退响应的详细信息。否则,此字段将未设置。 |
geocoding |
包含指定为地址的路径点的地理编码响应信息。 |
PolylineQuality
一组值,用于指定多段线的质量。
枚举 | |
---|---|
POLYLINE_QUALITY_UNSPECIFIED |
未指定多段线质量偏好设置。默认为 OVERVIEW 。 |
HIGH_QUALITY |
指定高质量多段线,其组成所用的点数比 OVERVIEW 多,但响应大小会增加。如需更高的精度,请使用此值。 |
OVERVIEW |
指定概览多段线,该多段线由少量点组成。在显示路线概览时,请使用此值。与使用 HIGH_QUALITY 选项相比,使用此选项的请求延迟时间更短。 |
PolylineEncoding
指定要返回的多段线的首选类型。
枚举 | |
---|---|
POLYLINE_ENCODING_UNSPECIFIED |
未指定多段线类型偏好设置。默认为 ENCODED_POLYLINE 。 |
ENCODED_POLYLINE |
指定使用多段线编码算法编码的多段线。 |
GEO_JSON_LINESTRING |
使用 GeoJSON LineString 格式指定多段线 |
ReferenceRoute
ComputeRoutesRequest 中受支持的参考路线。
枚举 | |
---|---|
REFERENCE_ROUTE_UNSPECIFIED |
未使用。包含此值的请求会失败。 |
FUEL_EFFICIENT |
省油路线。 |
SHORTER_DISTANCE |
行程距离较短的路线。这是一项实验性功能。 对于 对于 此功能不适用于任何其他交通方式、通过中间航点或 |
ExtraComputation
在完成请求时要执行的额外计算。
枚举 | |
---|---|
EXTRA_COMPUTATION_UNSPECIFIED |
未使用。包含此值的请求将失败。 |
TOLLS |
相应路线的过路费信息。 |
FUEL_CONSUMPTION |
相应路线的预估油耗。 |
TRAFFIC_ON_POLYLINE |
路线的可感知路况多段线。 |
HTML_FORMATTED_NAVIGATION_INSTRUCTIONS |
NavigationInstructions 以格式化 HTML 文本字符串的形式呈现。此内容应按原样读取。此内容仅供展示。请勿以程序化方式解析它。 |
路线
包含一条路线,该路线由一系列相连的道路路段组成,这些路段连接起始航点、终点和中间航点。
JSON 表示法 |
---|
{ "routeLabels": [ enum ( |
字段 | |
---|---|
route |
|
legs[] |
构成路线的一系列路段(航点之间的路径段)。每个航段都对应于两个非 |
distance |
相应路线的行程距离(以米为单位)。 |
duration |
导航路线所需的时间。如果您将 该时长以秒为单位,最多包含九个小数位,以“ |
static |
不考虑交通状况的情况下,沿着相应路线行驶所需的时间。 该时长以秒为单位,最多包含九个小数位,以“ |
polyline |
整个路线多段线。此多段线是所有 |
description |
路线说明。 |
warnings[] |
显示路线时显示的一组警告。 |
viewport |
折线的视口边界框。 |
travel |
有关相应路线的其他信息。 |
optimized |
如果您将 |
localized |
|
route |
一个不透明令牌,可传递给 Navigation SDK 以在导航期间重构路线,并在重新路线时遵循创建路线时的原始意图。将此令牌视为不透明 blob。请勿比较不同请求的此值,因为即使服务返回完全相同的路线,此值也可能会发生变化。 注意: |
RouteLabel
的标签,可用于标识路线的特定属性,以便与其他路线进行比较。Route
枚举 | |
---|---|
ROUTE_LABEL_UNSPECIFIED |
默认 - 不使用。 |
DEFAULT_ROUTE |
路线计算返回的默认“最佳”路线。 |
DEFAULT_ROUTE_ALTERNATE |
默认“最佳”路线的替代方案。指定 后,系统将返回这样的路线。 |
FUEL_EFFICIENT |
省油路线。系统会确定标有此值的路线是针对燃油消耗等生态参数进行了优化。 |
SHORTER_DISTANCE |
行程距离较短的路线。这是一项实验性功能。 |
RouteLeg
包含非 via
航点之间的路段。
JSON 表示法 |
---|
{ "distanceMeters": integer, "duration": string, "staticDuration": string, "polyline": { object ( |
字段 | |
---|---|
distance |
路线航段的行程距离(以米为单位)。 |
duration |
导航相应航段所需的时间。如果 该时长以秒为单位,最多包含九个小数位,以“ |
static |
相应路段的旅行时长,计算时不考虑路况。 该时长以秒为单位,最多包含九个小数位,以“ |
polyline |
此路段的整体多段线,其中包含每个 |
start |
此行程的起始位置。此位置可能与提供的 |
end |
此行程的终点。此位置可能与提供的 |
steps[] |
表示此路段中各个路段的步骤数组。每一步都代表一条导航指令。 |
travel |
包含应告知用户的其他信息,例如路线行程中可能存在的交通区域限制。 |
localized |
|
steps |
此 |
折线
封装编码多段线。
JSON 表示法 |
---|
{ // Union field |
字段 | |
---|---|
联合字段 polyline_type 。封装折线的类型。默认为 encoded_polyline。polyline_type 只能是下列其中一项: |
|
encoded |
使用多段线编码算法对多段线进行的字符串编码 |
geo |
使用 GeoJSON LineString 格式指定多段线。 |
RouteLegStep
包含
的一部分。步骤对应于单个导航指令。路线分段由步骤组成。RouteLeg
JSON 表示法 |
---|
{ "distanceMeters": integer, "staticDuration": string, "polyline": { object ( |
字段 | |
---|---|
distance |
此步骤的移动距离(以米为单位)。在某些情况下,此字段可能没有值。 |
static |
不考虑交通状况的情况下,完成此步骤所需的时间。在某些情况下,此字段可能没有值。 该时长以秒为单位,最多包含九个小数位,以“ |
polyline |
与此步骤关联的多段线。 |
start |
此步骤的起始位置。 |
end |
此步骤的终点位置。 |
navigation |
导航说明。 |
travel |
包含用户应了解的其他信息,例如相应行程步骤可能存在的交通区域限制。 |
localized |
|
transit |
如果行程模式为 |
travel |
此步骤所用的交通方式。 |
Maneuver
一组值,用于指定要对当前步骤执行的导航操作(例如左转、合并或直行)。
枚举 | |
---|---|
MANEUVER_UNSPECIFIED |
未使用。 |
TURN_SLIGHT_LEFT |
稍微向左转。 |
TURN_SHARP_LEFT |
向左急转。 |
UTURN_LEFT |
左转 U 形调头。 |
TURN_LEFT |
向左转。 |
TURN_SLIGHT_RIGHT |
稍微向右转。 |
TURN_SHARP_RIGHT |
向右急转。 |
UTURN_RIGHT |
右转 U 形调头。 |
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 ( |
字段 | |
---|---|
speed |
注意:此字段目前未填充任何内容。 |
RouteLegStepLocalizedValues
特定属性的文字表示法。
JSON 表示法 |
---|
{ "distance": { object ( |
字段 | |
---|---|
distance |
以文本形式表示的旅行距离。 |
static |
不考虑交通状况的行程时长,以文本形式表示。 |
RouteLegStepTransitDetails
与 TRANSIT
路线相关的 RouteLegStep
的其他信息。
JSON 表示法 |
---|
{ "stopDetails": { object ( |
字段 | |
---|---|
stop |
相应步骤的到达站和出发站的相关信息。 |
localized |
|
headsign |
指定该线路的行进方向,如车辆或出发站所标示的方向。方向通常是终点站。 |
headway |
将预计时间指定为目前同一车站各次发车之间的时长。例如,当 headway 秒值为 600 时,如果您错过了一班公交,那么预计需要 10 分钟才能等到下一班。 该时长以秒为单位,最多包含九个小数位,以“ |
transit |
此步骤中所用公交线路的相关信息。 |
stop |
从出发站到到达站之间的经停点数。此计数包含到达站,但不含出发站。例如,如果您的路线是从 A 站出发,途经 B 站和 C 站,最终到达 D 站,
返回 3。 |
trip |
时刻表和标志牌上显示的文本,用于向乘客标识公交行程。该文字应能唯一标识服务日内的行程。例如,“538”是周一至周五下午 3:10 从加利福尼亚州圣何塞出发前往加利福尼亚州萨克拉门托的 Amtrak 火车的 |
TransitStopDetails
有关 RouteLegStep
公交车站的详细信息。
JSON 表示法 |
---|
{ "arrivalStop": { object ( |
字段 | |
---|---|
arrival |
有关相应步骤到达经停点的信息。 |
arrival |
相应步骤的预计到达时间。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
departure |
有关相应步骤的出发车站的信息。 |
departure |
相应步骤的预计出发时间。 时间戳采用 RFC3339 世界协调时间(UTC,即“祖鲁时”)格式,精确到纳秒,最多九个小数位。示例: |
TransitStop
有关公交车站的信息。
JSON 表示法 |
---|
{
"name": string,
"location": {
object ( |
字段 | |
---|---|
name |
相应公交经停点的名称。 |
location |
经停点的位置(以经度/纬度坐标表示)。 |
TransitDetailsLocalizedValues
RouteTransitDetails
值的本地化说明。
JSON 表示法 |
---|
{ "arrivalTime": { object ( |
字段 | |
---|---|
arrival |
时间的格式化文本表示法,并带有相应的时区。 |
departure |
时间的格式化文本表示法,并带有相应的时区。 |
LocalizedTime
时间的本地化说明。
JSON 表示法 |
---|
{
"time": {
object ( |
字段 | |
---|---|
time |
以字符串形式指定的给定时区中的时间。 |
time |
包含时区。该属性的值是时区的名称(如 IANA 时区数据库中所定义),例如“America/New_York”。 |
TransitLine
包含此路段中所用公交线路的相关信息。
JSON 表示法 |
---|
{ "agencies": [ { object ( |
字段 | |
---|---|
agencies[] |
运营此公交线路的公交公司(或公交公司)。 |
name |
此公交线路的全名,例如“8 Avenue Local”。 |
uri |
该公交线路的 URI(由公交公司提供)。 |
color |
该线路标牌中常用的颜色。以十六进制表示。 |
icon |
与该线路相关联的图标的 URI。 |
name |
该公交线路的简称。此名称通常是线路编号,例如“M7”或“355”。 |
text |
该线路站牌上常用的文字颜色。以十六进制表示。 |
vehicle |
此公交线路上运营的车辆类型。 |
TransitAgency
运营公交线路的公交公司。
JSON 表示法 |
---|
{ "name": string, "phoneNumber": string, "uri": string } |
字段 | |
---|---|
name |
此公交公司的名称。 |
phone |
公交公司采用特定语言区域格式的电话号码。 |
uri |
公交公司的 URI。 |
TransitVehicle
公交线路中使用的车辆的相关信息。
JSON 表示法 |
---|
{ "name": { object ( |
字段 | |
---|---|
name |
此车辆的名称(应采用大写形式)。 |
type |
使用的车辆类型。 |
icon |
与此车辆类型关联的图标的 URI。 |
local |
与该交通工具类型关联的图标的 URI,取决于当地交通标志。 |
TransitVehicleType
公交线路的车辆类型。
枚举 | |
---|---|
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 |
无轨电车。 |
RouteLegTravelAdvisory
包含应告知用户的路段步骤的其他信息,例如可能存在的交通区域限制。
JSON 表示法 |
---|
{ "tollInfo": { object ( |
字段 | |
---|---|
toll |
包含特定 |
speed |
速度读数间隔,详细说明交通密度。适用于 示例:
|
RouteLegLocalizedValues
特定属性的文字表示法。
JSON 表示法 |
---|
{ "distance": { object ( |
字段 | |
---|---|
distance |
以文本形式表示的旅行距离。 |
duration |
时长,以文本形式表示,并本地化为查询所在区域的语言。考虑路况信息。注意:如果您未请求交通信息,此值与 staticDuration 相同。 |
static |
不考虑交通状况的行程时长,以文本形式表示。 |
StepsOverview
提供有关 RouteLegStep
列表的概览信息。
JSON 表示法 |
---|
{
"multiModalSegments": [
{
object ( |
字段 | |
---|---|
multi |
关于 |
MultiModalSegment
提供有关 RouteLeg.steps
的不同多模态细分的汇总信息。多模态片段定义为具有相同 RouteTravelMode
的一个或多个连续 RouteLegStep
。如果 RouteLeg
中的步骤不包含任何多模态细分,则不会填充此字段。
JSON 表示法 |
---|
{ "navigationInstruction": { object ( |
字段 | |
---|---|
navigation |
多模式路段的 NavigationInstruction。 |
travel |
多模式路段的出行方式。 |
step |
多模态片段的起始对应的 |
step |
多模态片段的结束对应的 |
视口
纬度-经度视口,表示为两个对角的 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": { "latitude": 40.477398, "longitude": -74.259087 }, "high": { "latitude": 40.91618, "longitude": -73.70018 } }
JSON 表示法 |
---|
{ "low": { object ( |
字段 | |
---|---|
low |
必需。视口的最低点。 |
high |
必需。视口的高点。 |
RouteLocalizedValues
特定属性的文字表示法。
JSON 表示法 |
---|
{ "distance": { object ( |
字段 | |
---|---|
distance |
以文本形式表示的旅行距离。 |
duration |
时长,以文本形式表示,并本地化为查询所在区域的语言。考虑路况信息。注意:如果您未请求交通信息,则此值与 |
static |
不考虑交通状况的行程时长,以文本形式表示。 |
transit |
以文本形式表示的公共交通费用。 |
GeocodingResults
包含适用于起点、终点和中间航点的
。仅针对地址路点进行填充。GeocodedWaypoints
JSON 表示法 |
---|
{ "origin": { object ( |
字段 | |
---|---|
origin |
经过地理编码的起点航点。 |
destination |
经过地理编码的目的地航点。 |
intermediates[] |
一系列经过地理编码的中间路径点,每个路径点都包含一个索引字段,该字段与路径点在请求中指定的顺序中的以零为起点的位置相对应。 |
GeocodedWaypoint
有关用作航点的位置的详细信息。仅针对地址航点进行填充。包含地理编码结果的详细信息,以便确定地址的地理编码结果。
JSON 表示法 |
---|
{
"geocoderStatus": {
object ( |
字段 | |
---|---|
geocoder |
表示地理编码操作生成的状态代码。 |
type[] |
结果的类型,形式为零个或多个类型标记。支持的类型:地址类型和地址组成部分类型。 |
partial |
表示地理编码器无法返回与原始请求完全匹配的结果,尽管它能够匹配所请求地址的一部分内容。您不妨检查一下原始请求中是否有拼写错误和/或地址不完整的情况。 |
place |
此结果的地点 ID。 |
intermediate |
请求中相应中间航点的索引。仅当相应的航点是中间航点时才填充。 |