路线规划

最后更新时间:2025-03-13

地图 SDK 提供的路线规划功能支持多种交通方式的路线计算能力,包括:

  1. 驾车(driving):支持结合实时路况、少收费、不走高速等多种偏好,精准预估到达时间(ETA)。
  2. 步行(walking):基于步行路线规划。
  3. 骑行(bicycling):基于自行车的骑行路线。
  4. 公交(transit):支持公共汽车、地铁等多种公共交通工具的换乘方案计算。
  5. 货车(trucking):基于道路客观条件产生的宽高重限制和行政部门规定的限制,结合实时路况、少收费、不走高速、躲避拥堵等多种偏好,对货车路线进行规划。


请求参数概览


  1. 驾车

    接口名 功能
    DrivingParam() 构造驾车请求参数
    DrivingParam(LatLng from, LatLng to) 构造驾车请求参数,同时设置起、终点坐标
    accuracy(int accuracy) from 定位精度,单位:米,取 > 0数值,默认5。 当定位精度 > 30米时heading参数将被忽略
    addWayPoint(LatLng l) 增加一个途经点,最多10个,如果多于 10 则不作任何操作。
    addWayPoints(Iterable ls) 增加多个途经点
    fromPOI(String fromPOI) 起点 POI ID (可通过腾讯位置服务地点搜索服务得到),传入后,优先级高于from(坐标)
    fromTravel(DrivingParam.Travel travel) 起点轨迹: 在真实的场景中,易受各种环境及设备精度影响,导致定位点产生误差,传入起点前段轨迹,可有效提升准确度。 优先级:高于 from 参数,具体的参数定义请参考接口文档
    heading(int heading) from 在起点位置时的车头方向,数值型,取值范围0至360(0度代表正北,顺时针一周360度) 传入车头方向,对于车辆所在道路的判断非常重要,直接影响路线计算的效果
    policy(DrivingParam.Policy policy, DrivingParam.Preference… preferences) 设置驾车规划策略
    policy 可选值:
    Policy.LEAST_TIME [默认] 参考实时路况,时间最短
    Policy.PICKUP 网约车场景 – 接乘客
    Policy.TRIP 网约车场景 – 送乘客
    preferences 可选值:
    Preference.AVOID_HIGHWAY 不走高速
    Preference.LEAST_FEE 少收费
    Preference.NAV_POINT_FIRST 该策略会通过终点坐标查找所在地点(如小区/大厦等),并使用地点出入口做为目的地,使路径更为合理
    Preference.REAL_TRAFFIC 参考实时路况
    roadType(DrivingParam.RoadType roadType) from 起点道路类型,可选值:
    RoadType.DEF [默认]不考虑起点道路类型
    RoadType.ABOVE_BRIDGE 在桥上
    RoadType.BELOW_BRIDGE 在桥下
    RoadType.ON_MAIN_ROAD 在主路
    RoadType.ON_SIDE_ROAD 在辅路
    RoadType.OPPOSITE_SIDE 在对面
    RoadType.ON_MAIN_ROAD_BELOW_BRIDGE 桥下主路
    RoadType.ON_SIDE_ROAD_BELOW_BRIDGE 桥下辅路
    speed(int speed) from 速度,单位:米/秒,默认3。 当速度低于1.39米/秒时,heading将被忽略
    toPOI(String toPOI) 终点 POI ID(可通过腾讯位置服务地点搜索服务得到),当目的地为较大园区、小区时,会以引导点做为终点(如出入口等),体验更优。 该参数优先级高于to(坐标),但是当目的地无引导点数据或POI ID失效时,仍会使用to(坐标)作为终点
    trafficSpeed(boolean enable) 设置是否返回路况配速信息
    setNoStep(int noStep) 不返回路线引导信息,可使回包数据量更小
    setMultRoute(int multRoute) 是否返回多方案
    setTagMode(TagMode tagMode) 设置返回Tag标签模式
    fromTravel(Travel travel) 起点轨迹
    departureTime(long timeStamp) 设置ETD时间(预计出发时间)
    addWayPoint(LatLng l) 增加一个途经点,最多30个,如果多余30则不作任何操作
    setCarNumber(String carNumber) 车牌号,填入后,路线引擎会根据车牌对限行区域进行避让,不填则不不考虑限行问题
    setCarType(CarType carType) 设置车类型,默认{@link CarType#DEF} 代表油车,{@link CarType#NEW_ENERGY}表示新能源
    setExtraFields(String… extraFields) 设置扩张字段
    cache(boolean enable) 是否开启算路缓存
    setAvoidPolygons(List<List> avoidPolygons) 避让区域:支持32个避让区域,每个区域最多可有9个顶点(如果是四边形则有4个坐标点,如果是五边形则有5个坐标点)
  2. 步行

    接口名 功能
    WalkingParam() 构造步行请求参数
    WalkingParam(LatLng from, LatLng to) 构造步行请求参数,同时设置起、终点坐标
    toPOI(String toPOI) 终点 POI ID(可通过腾讯位置服务地点搜索服务得到),当目的地为较大园区、小区时,会以引导点做为终点(如出入口等),体验更优。 该参数优先级高于to(坐标),但是当目的地无引导点数据或POI ID失效时,仍会使用to(坐标)作为终点
  3. 骑行

    接口名 功能
    BicyclingParam() 构造骑行请求参数
    BicyclingParam(LatLng from, LatLng to) 构造骑行请求参数,同时设置起、终点坐标
    toPOI(String toPOI) 终点 POI ID(可通过腾讯位置服务地点搜索服务得到),当目的地为较大园区、小区时,会以引导点做为终点(如出入口等),体验更优。 该参数优先级高于to(坐标),但是当目的地无引导点数据或POI ID失效时,仍会使用to(坐标)作为终点
  4. 公交

    接口名 功能
    TransitParam() 构造公交请求参数
    TransitParam(LatLng from, LatLng to) 构造公交请求参数,同时设置起、终点坐标
    departureTime(long departureTime) 出发时间,单位:秒。默认使用当前时间,用于过滤掉非运营时段的线路
    policy(TransitParam.Policy policy, TransitParam.Preference… preferences) 设置换乘策略
    policy 可选值:
    Policy.LEAST_TIME 较快捷
    LEAST_TRANSFER 少换乘
    LEAST_WALKING 少走路
    preferences可选值:
    NO_SUBWAY 不坐地铁

5.货车

接口名 功能
TruckingParam() 货车路线规划构造参数类
fromPOI(java.lang.String fromPOI) 起点POI ID,传入后,优先级高于from(坐标)
toPOI(java.lang.String toPOI) 终点POI ID(可通过腾讯位置服务地点搜索服务得到),当目的地为较大园区、小区时,会以引导点做为终点(如出入口等),体验更优。 该参数优先级高于to(坐标),但是当目的地无引导点数据或POI ID失效时,仍会使用to(坐标)作为终点
setPolicy(TruckingParam.Policy policy) 设置策略偏好
setTruckSize(TruckSize size) 设置车型,依据国标分类
setTruckLength(double length) 设置车辆长度,单位:米,默认 4.2
setTruckHeight(double height) 设置车辆高度,单位:米,默认 1.8
setTruckWidth(double width) 设置车辆宽度,单位:米,默认 1.9
setTruckWeight(double weight) 设置车辆总重,单位:吨,默认 2.5
setTruckLoad(double load) 设置核定载重,单位:吨,默认 2
setAxleWeight(double axleWeight) 设置轴重,单位:吨,默认 2
setAxleCount(int axleCount) 设置轴数,默认 2
setTrailer(int isTrailer) 设置是否挂车
setTrailerType(TrailerType trailerType) 设置拖挂类型
setGoodsType(GoodsType goodsType) 设置货品类型
setEnergyType(EnergyType energyType) 设置能源类型
setGasEmissionStandard(GasEmissionStandard gasEmissionStandard) 设置尾气排放标准
setPassType(PassType passType) 设置通行证类型
addWayPoint(LatLng l) 增加一个途经点,最多30个,如果多余30则不作任何操作
setPlateColor(PlateColor color) 设置车牌颜色
trafficSpeed(boolean enable) 设置是否返回路线实时路况(蚯蚓线)信息
setExtraFields(String… extraFields) 设置扩张字段
setTagMode(TagMode tagMode) 设置返回Tag标签模式
setMultRoute(int multRoute) 是否返回多条路线方案(目前支持同时返回3条)
setNoStep(int noStep) 是否返回路线步骤
setNoPolyline(int noPolyline) 是否返回路线坐标点串


返回结果

路线规划获取的检索结果由参数 listener 异步返回。当 HttpResponseListener.onSuccess 正常返回时,应将 BaseObject 强转为 DrivingResultObject(驾车)、WalkingResultObject(步行)、BicyclingResultObject(骑行) 、 TransitResultObject(公交)、TruckingResultObject(货车) 进行解析,包含的数据请参考 接口文档, 当 HttpResponseListener.onFailure 返回时,请用户根据的状态码和错误信息检查自己的参数输入:

状态码 错误信息
-1 AndroidManifest 中找不到腾讯地图的开发者密钥
310 请求参数信息有误
311 Key格式错误
306 请求有护持信息请检查字符串
110 请求来源未被授权

路线规划的数据较为复杂,这里列出数据结构供用户参考使用

  1. 驾车
    DrivingResultObject
名称 说明
result 不为空说明取到了路线数据
Result.routes 路线规划的方案集合
Route.distance 路线的距离,单位:米
Route.duration 预计所需时间,单位:分钟
Route.mode 路径的类型,这里只有DRIVING
Route.polyline 路线坐标点串
Route.restriction 限行信息
Route.tags 路线策略 仅当设置需要返回多条路线时返回,且为非必有值
Route.taxi_fare 预估打车费
Route.waypoints 设置的途经点
Route.steps 路线分解后的详细步骤集合
Step.accessorial_desc 附加信息,可能为空,如“进入北四环西路”,"到达终点"等
Step.act_desc 本段结束时的动作,如“右转”
Step.dir_desc 本段的方向,如“北”
Step.distance 本段的长度,单位:米
Step.instruction 本段的默认信息,如“向北步行100m,右转进入北四环西路”
Step.polyline_idx 本段的起点和终点在点串中的位置
Step.road_name 本段的路名,如“彩和坊路”
  1. 步行、骑行的返回结果数据结构与驾车基本一致,返回的数据可查询 接口文档

  2. 公交
    TransitResultObject

名称 说明
result 不为空说明取到了路线数据
Result.routes 路线规划的方案集合
Route.bounds 路线在地图上的经纬度范围
Route.distance 路线的距离,单位:米
Route.duration 预计所需时间,单位:分钟
Route.steps 当前路线方案的换乘\步行集合
mode 当前路段类型 包括 WALKING 和 TRANSIT
WALKING direction 本段的方向,如“北”
distance 本段的距离,单位:米
duration 预计用时,单位:分钟
polyline 路线坐标点串
accessorial_desc 本段的附加信息
steps 路线分解后的详细步骤
instruction 本段的默认信息,如“向北步行100m,右转进入北四环西路”
polyline_idx 本段的起点和终点在点串中的位置
road_name 本段的路名,如“彩和坊路”
dir_desc 本段的方向,如“北”
distance 本段的长度,单位:米
act_desc 本段结束时的动作,如“右转”
accessorial_desc 附加信息,可能为空,如“进入北四环西路”,"到达终点"等
TRANSIT lines 乘车线路集合
vehicle 线路类型,“RAIL”,“BUS”,“SUBWAY”三者之一
id 线路id
title 线路名称,如“1”、“地铁1号线”等
station_count 本段中经过的站点数目
price 阶段路线所花费用
destination 终点站,用于表示乘坐线路的方向
distance 距离,单位:米
duration 预计用时,单位:分钟
polyline 路线的坐标点串,用于将线路绘制到地图上,需要注意的是这个只需要取lines中的第一个元素。 比如在公交路线中,两个站点间有多条线路选择,而且走的路线时相同的时,就会被归于同一个lines列表中。
geton 上车站
id 车站id
title 车站名称
latLng 车站坐标
exit 出口信息
getoff 下车站
id 车站id
title 车站名称
latLng 车站坐标
exit 出口信息
stations 经停站
id 车站id
title 车站名称
latLng 车站坐标
  1. 货车
    TruckingResultObject
名称 说明
result 不为空说明取到了路线数据
Result.routes 路线规划的方案集合
Route.distance 路线的距离,单位:米
Route.duration 预计所需时间,单位:分钟
Route.mode 路径的类型,TRUCKING
Route.polyline 路线坐标点串
Route. routeId 路线ID
Route.tags 方案标签,无标签时值为空
Route. toll 预估过路费
Route. trafficSpeeds 路况信息,只有设置了trafficSpeed才返回
TrafficSpeed.distance 距离,单位:米
TrafficSpeed.level 路况类型 0:畅通 1:缓行 2:拥堵 3:无路况 4:严重拥堵
TrafficSpeed.polyline_idx 阶段路线坐标点串,在路线坐标点串的位置
TrafficSpeed.speed 路况速度, 单位:千米/小时
Route.steps 路线分解后的详细步骤集合
Step.accessorial_desc 附加信息,可能为空,如“进入北四环西路”,"到达终点"等
Step.act_desc 本段结束时的动作,如“右转”
Step.dir_desc 本段的方向,如“北”
Step.distance 本段的长度,单位:米
Step.instruction 本段的默认信息,如“向北步行100m,右转进入北四环西路”
Step.polyline_idx 本段的起点和终点在点串中的位置
Step.road_name 本段的路名,如“彩和坊路”
Step.type 阶段路线的步行设施类型(type),包含: 0普通道路,1过街天桥,2地下通道,3人行横道



调用示例

路线规划的接口用请参考 demo

本页内容