当我们日常出行时,免不了需要用到导航,那么地图路线规划API可以很好地实现此功能。本文将功能、适用场景和使用说明三个方面来介绍路径规划API接口。
功能介绍
驾车路线规划:开发者可根据起终点坐标检索符合条件的驾车路线规划方案,支持一次请求返回多条路线结果、支持传入多个途经点、支持传入车牌规避限行、支持根据不同业务场景设置不同的算路策略等。
步行路线规划:开发者可根据起终点坐标检索符合条件的步行路线规划方案。
公交路线规划:开发者可根据起终点坐标检索符合条件的公共交通路线规划方案,支持结合业务场景设置不同的公交换乘策略。
骑行路线规划:开发者可根据起终点坐标检索符合条件的骑行路线规划方案。
电动车路线规划:开发者可根据起终点坐标检索符合条件的电动车路线规划方案,与骑行略有不同的是会考虑限行等条件。
适用场景
- 无需展现地图的场景下,进行线路查询,如以线路结果页形式展现换乘方案;
- 根据返回线路数据,自行开发线路导航。
使用说明
下面介绍驾车路线规划和公交路线规划的使用,其他可参见接口文档
驾车路线规划
请求参数
| 名称 | 类型 | 必须 | 说明 |
|---|---|---|---|
| origin | String | 是 | 起点经纬度 经度在前,纬度在后,经度和纬度用","分割,经纬度小数点后不得超过6位 |
| destination | String | 是 | 目的地经纬度 经度在前,纬度在后,经度和纬度用","分割,经纬度小数点后不得超过6位 |
| originType | String | 否 | 起点处道路类型 填入此值可以辅助更精准的起点算路 0:普通道路 1:高架上 2:高架下 3:主路 4:辅路 5:隧道 7:环岛 9:停车场内部 |
| strategy | Integer | 否 | 驾车算路策略 0:速度优先(只返回一条路线),此路线不一定距离最短 1:费用优先(只返回一条路线),不走收费路段,且耗时最少的路线 2:距离优先(只返回一条路线),仅走距离最短的路线,但是可能存在穿越小路/小区的情况 3:速度优先(只返回一条路线),不走快速路,例如京通快速路 32:默认,推荐 33:躲避拥堵 34:高速优先 35:不走高速 36:少收费 37:大路优先 38:速度最快 39:躲避拥堵+高速优先 40:躲避拥堵+不走高速 41:躲避拥堵+少收费 42:少收费+不走高速 43:躲避拥堵+少收费+不走高速 44:躲避拥堵+大路优先 45:躲避拥堵+速度最快 |
| waypoints | String | 否 | 途经点 途径点坐标串,默认支持1个有序途径点。多个途径点坐标按顺序以英文分号;分隔。最大支持16个途经点 |
| avoidpolygons | String | 否 | 避让区域 区域避让,默认支持1个避让区域,每个区域最多可有16个顶点;多个区域坐标按顺序以英文竖线符号分隔,如果是四边形则有四个坐标点,如果是五边形则有五个坐标点;最大支持32个避让区域。同时传入避让区域及避让道路,仅支持避让道路;每个避让区域不能超过81平方公里,否则避让区域会失效 |
| avoidroad | String | 否 | 避让道路名 只支持一条避让道路 |
| plate | String | 否 | 车牌号码 车牌号,如 京AHA322,支持6位传统车牌和7位新能源车牌,用于判断限行相关 |
| carType | String | 否 | 车辆类型 0:普通燃油汽车 1:纯电动汽车 2:插电式混动汽车 |
| ferry | String | 否 | 是否使用轮渡 0:使用渡轮 1:不使用渡轮 |
| showFields | String | 否 | 返回结果控制,用来筛选接口返回结果中是否出现哪些字段。show_fields的使用需要遵循如下规则:1、具体可指定返回的字段类型有:costtmcsnavicitiespolyline任选一个或多个作为入参值,即可在返回结果中显示。2、多个值间采用“,”进行分割;3、show_fields未设置、为空时,只返回基础信息类内字段; |
返回样例
{
"code": 200,// 返回码,详见返回码说明
"msg": "成功",// 返回码对应描述
"taskNo": "786758979152547317551847",// 本次请求号
"charge": true,// 计费标志
"data": {
"strategyNum": "1",//路径规划方案总数
"strategyList": {
//返回的规划方案列表
"paths": [ //算路方案详情
{
"distance": "12784",//方案距离,单位:米
"restriction": "0",//0代表限行已规避或未限行,即该路线没有限行路段 1代表限行无法规避,即该线路有限行路段
"steps": [ //路线分段
{
"orientation": "西", //进入道路方向
"step_distance": "81",//分段距离信息
"road_name": "", //分段道路名称
"instruction": "向西行驶81米左转", //行驶指示
//以下字段是否返回,需要根据 showFields 字段传入的值来控制
"cost": {
//设置后可返回方案所需时间及费用成本
"duration": "30",//线路耗时,分段step中的耗时
"toll_road": "",//主要收费道路
"toll_distance": "0",//收费路段里程,单位:米,包括分段信息
"traffic_lights": "0",//方案中红绿灯个数,单位:个
"tolls": "0"//此路线道路收费,单位:元,包括分段信息
},
"cities": [//设置后可返回分段途径城市信息
{
"citycode": "0571",//途径城市编码
"adcode": "330100",//途径区域编码
"city": "杭州市",//途径城市名称
"districts": [//途径区县信息
{
"adcode": "330106",//途径区县adcode
"name": "西湖区"//途径区县名称
}
]
}
],
"navi": {
//设置后可返回详细导航动作指令
"assistant_action": "",//导航主要动作指令
"action": "左转"//导航辅助动作指令
},
"polyline": "120.109051,30.277231;120.108209,30.277183",//设置后可返回分路段坐标点串,两点间用“,”分隔
"tmcs": [//设置后可返回分段路况详情
{
"tmc_distance": "81",//从当前坐标点开始step中路况相同的距离
"tmc_status": "未知",//路况信息,包括:未知、畅通、缓行、拥堵、严重拥堵
"tmc_polyline": "120.109051,30.277231;120.108209,30.277183"//此段路况涉及的道路坐标点串,点间用","分隔
}
]
}
]
}
],
"origin": "120.10910,30.27714",//起点经纬度
"destination": "120.17931,30.25326",//终点经纬度
"taxi_cost": "27" //预计出租车费用,单位:元
}
}
}
公交路线规划
请求参数
| 名称 | 类型 | 必须 | 说明 |
|---|---|---|---|
| appid | String | 是 | 服务商分配的唯一标识 |
| timestamp | Long | 是 | 当前时间的毫秒数 |
| sign | String | 是 | 签名,详见签名算法说明 |
| origin | String | 是 | 起点经纬度 经度在前,纬度在后,经度和纬度用","分割,经纬度小数点后不得超过6位 |
| destination | String | 是 | 目的地经纬度 经度在前,纬度在后,经度和纬度用","分割,经纬度小数点后不得超过6位 |
| origAddCode | String | 否 | 起点所在行政区域编码 参考国家行政区域编码表 |
| destAddCode | String | 否 | 终点所在行政区域编码 参考国家行政区域编码表 |
| origCityCode | String | 是 | 起点所在城市 仅支持citycode,参考国家行政区域编码表 相同时代表同城,不同时代表跨城 譬如西湖区citycode为330106 |
| destCityCode | String | 是 | 目的地所在城市 仅支持citycode,参考国家行政区域编码表 相同时代表同城,不同时代表跨城 譬如西湖区citycode为330106 |
| strategy | String | 否 | 公共交通换乘策略 可选值: 0:推荐模式,综合权重 1:最经济模式,票价最低 2:最少换乘模式,换乘次数少 3:最少步行模式,尽可能减少步行距离 4:最舒适模式,尽可能乘坐空调车 5:不乘地铁模式,不乘坐地铁路线 7:地铁优先模式,步行距离不超过4KM 8:时间短模式,方案花费总时间最少 |
| alternativeRoute | String | 否 | 返回方案条数 可传入1-10的阿拉伯数字,代表返回的不同条数 |
| multiexPort | String | 否 | 地铁出入口数量 0:只返回一个地铁出入口 1:返回全部地铁出入口 |
| maxTrans | String | 否 | 最大换乘次数 0:直达 1:最多换乘1次 2:最多换乘2次 3:最多换乘3次 4:最多换乘4次 |
| nightFlag | String | 否 | 考虑夜班车 0:不考虑夜班车 1:考虑夜班车 |
| date | String | 否 | 请求日期 例如:2013-10-28 |
| time | String | 否 | 请求时间 例如:9-54 |
| showFields | String | 否 | 返回结果控制,用来筛选接口返回结果中是否出现哪些字段。show_fields的使用需要遵循如下规则:1、具体可指定返回的字段类型有:costnavipolyline任选一个或多个作为入参值,即可在返回结果中显示。2、多个值间采用“,”进行分割;3、show_fields未设置、为空时,只返回基础信息类内字段; |
返回样例
{
"code": 200,// 返回码,详见返回码说明
"msg": "成功",// 返回码对应描述
"taskNo": "697790392161452073342933",// 本次请求号
"charge": true,// 计费标志
"data": {
"strategyNum": "2",//路径规划方案总数
"strategyList": {
"cost": {
"taxi_fee": "32"
},
"distance": "163755",//本条路线的总距离,单位:米
"origin": "120.10910,30.27714", //起点经纬度
"destination": "121.63084,29.86607",//终点经纬度
"transits": [ //公交方案列表
{
"cost": {
"duration": "8040",
"transit_fee": "79.000000"
},
"distance": "179370",//本条路线的总距离,单位:米
"nightflag": "",//0:非夜班车;1:夜班车
"segments": [
{
"walking": {
//步行方案信息
"distance": "621",//每段线路步行距离 单位:米
"origin": "120.215919,30.294054",//起点坐标
"destination": "120.212502,30.290972",//终点坐标
"duration": "100000",//步行预计时间 单位:秒
"cost": {
//设置后可返回方案所需时间及费用成本,需传showFields才可返回
"duration": "951"//线路耗时,方案总耗时,包含等车时间
},
"steps": [//步行路段列表
{
"distance": "87",//此段路的距离
"road": "",//路的名字
"instruction": "步行87米左转",//此段路的行走介绍
"duration": "",//此段路预计消耗时间 单位:秒
"polyline": "",//此段路的坐标
"action": "",//步行主要动作
"assistant_action": "", //步行辅助动作
"navi": {
//设置后可返回详细导航动作指令。需传showFields才可返回
"assistant_action": "",//导航辅助动作指令
"action": "左转",//导航主要动作指令
"walk_type": "0"//算路结果中存在的道路类型:0:普通道路;1:人行横道;3:地下通道;4:过街天桥;5:地铁通道;6:公园;7:广场;8:扶梯;9:直梯;10:索道;11:空中通道;12:建筑物穿越通道;13:行人通道;14:游船路线;15:观光车路线;16:滑道;18:扩路;19:道路附属连接线;20:阶梯;21:斜坡;22:桥;23:隧道;30:轮渡;
},
"polyline": {
//需传showFields才可返回
"polyline": "120.109055,30.277231;120.108215,30.277187"//设置后可返回分路段坐标点串,两点间用“,”分隔
}
}
]
}
},
{
"railway": {
//火车换乘信息
"trip": "G195",//线路车次号
"distance": "154600",//该item换乘段的行车总距离
"name": "G195(北京南-宁波)",//线路名称
"id": "101001614253",//线路id编号
"time": "2760",//该线路车段耗时
"type": "G字头的高铁火车",//线路车次类型
"departure_stop": {
//火车始发站信息
"adcode": "330102",//上车站点所在城市的adcode
"name": "杭州东",//上车站点名称
"start": "0",//是否始发站,1表示为始发站,0表示非始发站
"location": "120.212600 30.290851",//上车站点经纬度
"id": "B023B08WDR",//上车站点ID
"time": "2221"//上车点发车时间
},
"arrival_stop": {
//火车到站信息
"adcode": "330203",//下车站点所在城市的adcode
"name": "宁波",//下车站点名称
"location": "121.536807 29.861967",//下车站点经纬度
"end": "1",//是否为终点站,1表示为终点站,0表示非终点站
"id": "B023E0YC7M",//下车站点ID
"time": "2307"//到站时间,如大于24:00,则表示跨天
},
"via_stop": {
//途径站点信息,extensions=all时返回
"name": "宁波",//途径站点的名称
"location": "121.536807 29.861967",//途径站点的坐标点
"id": "B023E0YC7M",//途径站点的ID
"time": "2307"//途径站点的进站时间,如大于24:00,则表示跨天
"wait": "5",//途径站点的停靠时间,单位:分钟
},
"alters": {
//聚合的备选方案,extensions=all时返回
"name": "宁波",//备选方案ID
"id": "B023E0YC7M"//备选线路名称
},
"spaces": [//仓位及价格信息
{
"code": "",//仓位编码
"cost": "120"//仓位费用
}
]
}
},
{
"bus": {
//公交方案信息
"buslines": [//步行路段列表
{
"start_time": "",//首班车时间 格式如:0600,代表06:00
"distance": "2022",//公交行驶距离 单位:米
"bustimetag": "0",
"id": "330200021780",//公交路线id
"type": "地铁线路",//公交类型 格式如:地铁线路
"bus_time_tips": "",
"name": "轨道交通2号线(栎社国际机场--红联)",//公交路线名称
"end_time": "",//末班车时间 格式如:2300,代表23:00
"via_num": "1",//此段途经公交站数
"departure_stop": {
//此段起乘站信息 格式如:中关村
"name": "宁波火车站",//站点名字
"location": "121.537022,29.862141",//站点经纬度
"id": "330200021780011",//站点id
"entrance": {
//入口信息
"name": "B口",//入口名称
"location": "121.537102,29.860975"//入口经纬度
},
"exit": {
//出口信息
"name": "B口",//出口名称
"location": "121.537102,29.860975"//出口经纬度
}
},
"arrival_stop": {
//此段下车站 格式如:中关村
"name": "鼓楼", //站点名字
"location": "121.548970,29.873914",//站点经纬度
"id": "330200021780013"//站点id
},
"via_stops": [ //此段途经公交站点列表
{
"name": "城隍庙", //途径公交站点信息
"location": "121.548778,29.867124",//公交站点经纬度
"id": "330200021780012" //公交站点编号
}
],
"cost": {
//设置后可返回方案所需时间及费用成本,需传showFields才可返回
"duration": "1073"//线路耗时,方案总耗时,包含等车时间
},
"polyline": {
//需传showFields才可返回
"polyline": "120.109629,30.281911;120.111323,30.281943;"//设置后可返回分路段坐标点串,两点间用“,”分隔
}
}
]
},
"taxi": {
//出租车方案信息
"price": "338",//打车预计花费金额
"drivetime": "",//打车预计花费时间
"distance": "",//打车距离
"polyline": "",//线路点集合,通过show_fields控制返回与否
"startpoint": "",//打车起点经纬度
"startname": "",//打车起点名称
"endpoint": "",//打车终点经纬度
"endname": "",//打车终点名称
}
}
]
}
]
}
}
}