腾讯地图_驾车路线规划
<h3>接口描述</h3>
<ul>
<li>支持结合实时路况、少收费、不走高速等多种偏好,精准预估到达时间(ETA),新增高级参数路线解释性内容、沿途交通事件、未来路线规划。</li>
</ul>
<h3>请求地址</h3>
<p><code>https://api.jumdata.com/ttmap/route/drive</code></p>
<h3>请求方式</h3>
<ul>
<li>GET/POST</li>
</ul>
<h3>请求格式</h3>
<ul>
<li>x-www-form-urlencoded</li>
</ul>
<h3>请求参数</h3>
<table>
<thead>
<tr>
<th>名称</th>
<th>类型</th>
<th>必须</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>appId</td>
<td>String</td>
<td>是</td>
<td>服务商分配的唯一标识</td>
</tr>
<tr>
<td>timestamp</td>
<td>Long</td>
<td>是</td>
<td>当前时间的毫秒数</td>
</tr>
<tr>
<td>sign</td>
<td>String</td>
<td>是</td>
<td>签名,见签名算法说明</td>
</tr>
<tr>
<td>origins</td>
<td>String</td>
<td>是</td>
<td>起点位置坐标 <br/>格式:纬度在前,经度在后,半角逗号分隔。<br/>注:系统将吸附就近道路作为起点,最大20公里内若无道路,则会算路失败<br/> 譬如:39.915285,116.403857</td>
</tr>
<tr>
<td>originPoi</td>
<td>String</td>
<td>否</td>
<td>起点POI ID,传入后,优先级高于origins(坐标)</td>
</tr>
<tr>
<td>destinations</td>
<td>String</td>
<td>是</td>
<td>终点位置坐标 <br/>格式:lat,lng<br/>注:直线距离过长或过短会算路失败,最短距离不小于10米,最长距离不超过300公里</td>
</tr>
<tr>
<td>destinationPoi</td>
<td>String</td>
<td>否</td>
<td>终点POI ID(可通过腾讯位置服务地点搜索服务得到),当目的地为较大园区、小区时,会以引导点做为终点(如出入口等),体验更优。<br/>该参数优先级高于to(坐标),但是当目的地无引导点数据或POI ID失效时,仍会使用to(坐标)作为终点</td>
</tr>
<tr>
<td>destinationPoiName</td>
<td>String</td>
<td>否</td>
<td>终点POI名称,当目的地为较大园区、小区时,会以引导点做为终点(如出入口等),体验更优<br/>该参数优先级低于to(POI ID)、高于destinations(坐标),可以在无法获取POI ID时使用,但是当目的地无引导点数据或无法根据名称匹配POI或POI失效时,仍会使用destinations(坐标)作为终点<br/>该参数仅在入参包含 policy=TRIP 时生效</td>
</tr>
<tr>
<td>heading</td>
<td>String</td>
<td>否</td>
<td>[origins辅助参数]在起点位置时的车头方向,数值型,取值范围0至360(0度代表正北,顺时针一周360度)传入车头方向,对于车辆所在道路的判断非常重要,直接影响路线计算的效果</td>
</tr>
<tr>
<td>speed</td>
<td>String</td>
<td>否</td>
<td>[origins辅助参数]速度,单位:米/秒,默认3。 当速度低于1.39米/秒时,heading将被忽略</td>
</tr>
<tr>
<td>accuracy</td>
<td>String</td>
<td>否</td>
<td>[origins辅助参数]定位精度,单位:米,取>0数值,默认5。 当定位精度>30米时heading参数将被忽略</td>
</tr>
<tr>
<td>roadType</td>
<td>Integer</td>
<td>否</td>
<td>[origins辅助参数] 起点道路类型,可选值:<br/>0 [默认]不考虑起点道路类型<br/>1 在桥上;<br/>2 在桥下;<br/>3 在主路;<br/>4 在辅路;<br/>5 在对面;<br/>6 桥下主路;<br/>7 桥下辅路</td>
</tr>
<tr>
<td>fromTrack</td>
<td>String</td>
<td>否</td>
<td><strong>起点轨迹:</strong> <br/>在真实的场景中,易受各种环境及设备精度影响,导致定位点产生误差,起点前段轨迹起到辅助参考作用,在车辆行驶中发起算路时,可对起点有修正作用。<br/><strong>轨迹中的每个定位点包含以下信息:</strong> <br/>1.纬度<br/>2.经度<br/>3.速度:GPS速度,单位 米/秒,取不到传-1<br/>4.精度:GPS精度, 单位毫米,取不到传-1 <br/>5.运动方向: gps方向,正北为0, 顺时针夹角,[0-360),获取不到时传-1<br/>6.设备方向:正北为0, 顺时针夹角,[0-360),取不到传-1<br/>7.时间:定位获取该点的时间,Unix时间戳,取不到传0<br/><strong>参数格式:</strong><br/>1.轨迹中最多支持传入50个点。<br/>2.每个点之间英文分号分隔,时间顺序由旧到新(第一个点最早获取,最后一个点最新得到)<br/>3.每个点中的信息用英文逗号分隔,并按以下顺序传入:<br/>纬度,经度,速度,精度,运动方向,设备方向,时间;第2个点;第3个点</td>
</tr>
<tr>
<td>wayPoints</td>
<td>String</td>
<td>否</td>
<td>途经点,格式:lat1,lng1;lat2,lng2;… 最大支持30个,超过30个之后的将被忽略</td>
</tr>
<tr>
<td>plateNumber</td>
<td>String</td>
<td>否</td>
<td>车牌号,填入后,路线引擎会根据车牌对限行区域进行避让,不填则不不考虑限行问题</td>
</tr>
<tr>
<td>carType</td>
<td>Integer</td>
<td>否</td>
<td>车辆类型(影响限行规则),取值:<br/>0:[默认]普通汽车<br/>1:新能源</td>
</tr>
<tr>
<td>policy</td>
<td>String</td>
<td>否</td>
<td>一、策略参数(以下四选一)<br/>LEAST_TIME:[默认]参考实时路况,时间最短<br/>PICKUP:网约车场景 – 接乘客<br/>TRIP:网约车场景 – 送乘客<br/>SHORT_DISTANCE:不参考路况,距离短(此策略会忽略所有单项偏好参数、车牌和车型,仅返回一条路线)<br/>二、单项偏好参数<br/>(可与策略参数并用,可多选,逗号分隔)<br/>REAL_TRAFFIC:参考实时路况<br/>LEAST_FEE:少收费<br/>HIGHWAY_FIRST:高速优先<br/>AVOID_HIGHWAY:不走高<br/>HIGHROAD_FIRST:大路优先<br/>NAV_POINT_FIRST: 该策略会通过终点坐标查找所在地点(如小区/大厦等),并使用地点出入口做为目的地,使路径更为合理<br/> PICKUP_ADSORB: 打车接驾起终点吸附(支持与SHORT_DISTANCE共用)<br/>TRIP_ADSORB: 打车送驾起终点吸附(支持与SHORT_DISTANCE共用)</td>
</tr>
<tr>
<td>avoidPolygons</td>
<td>String</td>
<td>否</td>
<td>避让区域:支持32个避让区域,每个区域最多可有16个顶点(如果是四边形则有4个坐标点,如果是五边形则有5个坐标点)<br/>参数格式:<br/>纬度在前,经度在后,用半角逗号 “,” 分隔,小数点后不超过6位,各经纬度之间用半角分号 “;” 分隔。各区域多边形间,用竖线符号分隔 “|”</td>
</tr>
<tr>
<td>getMp</td>
<td>Integer</td>
<td>否</td>
<td>是否返回多方案,取值:<br/>0 [默认]仅返回一条路线方案<br/>1 返回多方案(最多可返回三条方案供用户备选)</td>
</tr>
<tr>
<td>getSpeed</td>
<td>Integer</td>
<td>否</td>
<td>是否返回路况(道路速度),取值:<br/>0 [默认]不返回路况<br/>1 返回路况</td>
</tr>
<tr>
<td>addedFields</td>
<td>String</td>
<td>否</td>
<td>返回指定标准附加字段,取值支持:<br/>cities 路线途经行政区划信息(按路线途经顺序排序)网约车场景参数:<br/>route_id 路线ID,乘客选中路线时,后续作为唯一路线标识传给导航SDK发起导航<br/>nav_session_id 导航算路会话ID<br/>custom_route_info乘客熟路(个性化路线)信息</td>
</tr>
<tr>
<td>isCache</td>
<td>Integer</td>
<td>否</td>
<td>[网约车场景]控制是否缓存算路结果,取值:<br/>0 不存<br/>1 缓存(地图服务端缓存算路结果,用于后续乘客选路后,从服务端缓存取出所选路线,进行路线保护)</td>
</tr>
<tr>
<td>passenger</td>
<td>String</td>
<td>否</td>
<td>[网约车场景]乘客/用户唯一标识<br/>1.乘客个性化上车点<br/>2.个性化路线(熟路)</td>
</tr>
<tr>
<td>noStep</td>
<td>Integer</td>
<td>否</td>
<td>不返回路线引导信息,可使回包数据量更小,取值:<br/>0[默认]返回路线引导信息<br/>1不返回</td>
</tr>
<tr>
<td>serviceLevel</td>
<td>Integer</td>
<td>否</td>
<td>服务性能设置,可选值:<br/>0 标准算路(默认)<br/>1 轻量算路,性能较优</td>
</tr>
<tr>
<td>output</td>
<td>String</td>
<td>否</td>
<td>返回格式:支持JSON/JSONP,默认:JSON</td>
</tr>
<tr>
<td>callback</td>
<td>String</td>
<td>否</td>
<td>JSONP方式回调函数</td>
</tr>
</tbody>
</table>
<h3>签名算法</h3>
<pre><code>sign = sha256(appId + appSecret + timestamp)</code></pre>
<p>用服务商分配的 <strong>appId</strong>、服务商分配的 <strong>appSecret</strong>,当前时间毫秒数 <strong>timestamp</strong>,按上述顺序拼接成字符串,再进行 <strong>sha256</strong> 哈希得到。如下:</p>
<pre><code class="language-java">String appId = &quot;xyzxy2121zxyz&quot;;
String timestamp = &quot;1555378976238&quot;;
String appSecret = &quot;efcefcef1121cefcefc1212121&quot;;
String str = appId + appSecret + timestamp;
String sign = sha256(str);</code></pre>
<h3>正确返回</h3>
<pre><code>{
&quot;code&quot;: 200, // 详见code返回码说明
&quot;msg&quot;: &quot;成功&quot;, // code对应的描述
&quot;charge&quot;: true, // 计费标志
&quot;taskNo&quot;: &quot;69564903663951243279&quot;, // 本次唯一请求号
&quot;data&quot;: {
&quot;routes&quot;:// [路线方案(设置getMp=1时可返回最多3条)
{
&quot;distance&quot;: 38864,//方案总距离,单位:米
&quot;toll&quot;: 0,//高速过路费,单位:元
&quot;steps&quot;: [//路线步骤
{
&quot;road_name&quot;: &quot;东华门大街&quot;,//阶段路线路名
&quot;distance&quot;: 76,//阶段路线距离,单位:米
&quot;act_desc&quot;: &quot;左转&quot;,//阶段路线末尾动作:如:左转调头
&quot;polyline_idx&quot;: [ //阶段路线坐标点串在方案路线坐标点串的位置
0,
5
],
&quot;dir_desc&quot;: &quot;西&quot;,//阶段路线方向
&quot;instruction&quot;: &quot;沿东华门大街向西行驶76米,左转&quot;,//阶段路线描述
&quot;accessorial_desc&quot;: &quot;&quot; //末尾辅助动作:如:到达终点
}
],
&quot;waypoints&quot;: [ //途经点,(输入waypoints时才会有此结点返回)当wayPointOrder=0时,此列表与入参的waypoints顺序一致 当wayPointOrder=1时,会以最优(路线最短)路线对入参的waypoints进行排序,再进行算路,
{
&quot;title&quot;:xx,
&quot;duration&quot;:xx,//预估到达耗时,单位:分钟
&quot;distance&quot;:xx, //起点到该途经点的距离,单位:米
&quot;polyline_idx&quot;:xx, //该途经点在polyline中的索引位置(数组下标位置
&quot;input_order_idx&quot;:xx, //当wayPointOrder=1返回,该值对应途经点输入时的第几个途径点,0则表示该途经点为输入途经点参数时的第1个途经点,以此类推
&quot;location&quot;: {//途经点坐标
&quot;lat&quot;: xx,//纬度
&quot;lng&quot;: xx //经度
}
}
],
&quot;speed&quot;: [ //路况信息,只有设置getSpeed=1才会返回
{
&quot;polyline_idx&quot;: [ //阶段路线坐标点串,在路线坐标点串的位置
0,
5
],
&quot;distance&quot;:76,//距离,单位:米
&quot;level&quot;:0 //路况类型:0:畅通 1:缓行 2:拥堵 3:无路况(大概率畅通) 4:严重拥堵
}
],
&quot;tags&quot;: [],// 方案标签,表明方案特色,详细说明见下文示例:tags:[“LEAST_LIGHT”]
&quot;mode&quot;: &quot;DRIVING&quot;,//方案交通方式,固定值:“DRIVING”
&quot;duration&quot;: 56,
&quot;traffic_light_count&quot;: 13,
&quot;restriction&quot;: { //限行信息
&quot;status&quot;: 1 //限行状态码:0 途经没有限行城市,或路线方案未涉及限行区域 1 途经包含有限行的城市 3 [设置车牌] 已避让限行 4 [设置车牌] 无法避开限行区域(本方案包含限行路段)
},
&quot;taxi_fare&quot;: { //预估打车费
&quot;fare&quot;: 124 //预估打车费用,单位:元
},
&quot;polyline&quot;: [ //方案路线坐标点串(该点串经过压缩,解压请参考:polyline 坐标解压)
39.915238,
116.40386
]
}
]
}
}</code></pre>
<h3>错误返回</h3>
<pre><code>{
&quot;msg&quot;: &quot;起点经纬度不能为空&quot;,
&quot;code&quot;: 400 // 详见code返回码说明
}</code></pre>
<h3>阶段路线末尾动作(act_desc)列表</h3>
<p>左转
右转
偏左转
偏右转
左后转
右后转
左转掉头
直行
靠左
靠右
进入环岛
空</p>
<h3>阶段路线方向(dir_desc)列表</h3>
<p>东
东北
北
西北
西
西南
南
东南
“” 空(为空时,代表导航段有转弯且方向发生变化)</p>
<h3>末尾辅助动作(accessorial_desc)列表</h3>
<table>
<thead>
<tr>
<th>名称</th>
<th>名称</th>
<th>名称</th>
<th>名称</th>
</tr>
</thead>
<tbody>
<tr>
<td>进入主路</td>
<td>到达出口</td>
<td>走第1个出口</td>
<td>上高架</td>
</tr>
<tr>
<td>进入辅路</td>
<td>到达收费站</td>
<td>走第2个出口</td>
<td>不要上高架</td>
</tr>
<tr>
<td>出主路</td>
<td>到达途经地</td>
<td>走第3个出口</td>
<td>下高架</td>
</tr>
<tr>
<td>进高速</td>
<td>到达目的地</td>
<td>走第4个出口</td>
<td>不要下高架</td>
</tr>
<tr>
<td>进入匝道</td>
<td>到达目的地(在道路左侧)</td>
<td>走第5个出口</td>
<td>上坡</td>
</tr>
<tr>
<td>进入隧道</td>
<td>到达目的地(在道路右侧)</td>
<td>走第6个出口</td>
<td>下坡</td>
</tr>
<tr>
<td>进入中间岔道</td>
<td>到达入口</td>
<td>走第7个出口</td>
<td>不要上坡</td>
</tr>
<tr>
<td>进入右岔路</td>
<td>复杂路口右1</td>
<td>到达途经点,走第1出口</td>
<td>不要下坡</td>
</tr>
<tr>
<td>进入左岔路</td>
<td>复杂路口右2</td>
<td>到达途经点,走第2出口</td>
<td>上桥</td>
</tr>
<tr>
<td>进入右转专用道</td>
<td>复杂路口右3</td>
<td>到达途经点,走第3出口</td>
<td>下桥</td>
</tr>
<tr>
<td>进入左转专用道</td>
<td>复杂路口右4</td>
<td>到达途经点,走第4出口</td>
<td>不要上桥</td>
</tr>
<tr>
<td>进入服务区</td>
<td>复杂路口右5</td>
<td>到达途经点,走第5出口</td>
<td>不要下桥</td>
</tr>
<tr>
<td>进入调头车道</td>
<td>复杂路口左1</td>
<td>到达途经点,走第6出口</td>
<td>走桥下</td>
</tr>
<tr>
<td>不要进入收费站</td>
<td>复杂路口左2</td>
<td>到达途经点,走第7出口</td>
<td>走小路</td>
</tr>
<tr>
<td>进入内部路</td>
<td>复杂路口左3</td>
<td>到达途经点或目的地</td>
<td>走河边</td>
</tr>
<tr>
<td>不要进入内部路</td>
<td>复杂路口左4</td>
<td>注意不是右转</td>
<td>过天桥</td>
</tr>
<tr>
<td>不要进入隧道</td>
<td>复杂路口左5</td>
<td>注意不是右后转</td>
<td>过高架</td>
</tr>
<tr>
<td>不要进入匝道</td>
<td>注意不是左转</td>
<td>不要走桥下</td>
</tr>
<tr>
<td>驶出高速</td>
<td>注意不是左后转</td>
<td>不要逆行</td>
</tr>
<tr>
<td>驶出当前高速</td>
</tr>
</tbody>
</table>
<h3>返回字段说明</h3>
<table>
<thead>
<tr>
<th>字段名</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>返回码,详见code返回码说明(非http返回状态码)</td>
</tr>
<tr>
<td>msg</td>
<td>code对应的描述</td>
</tr>
<tr>
<td>charge</td>
<td>计费标志</td>
</tr>
<tr>
<td>taskNo</td>
<td>本次请求号</td>
</tr>
<tr>
<td>data</td>
<td>返回具体结果,object类型,详见成功返回样例</td>
</tr>
</tbody>
</table>
<h4>code返回码说明</h4>
<table>
<thead>
<tr>
<th>code</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>200</td>
<td>成功 (计费)</td>
</tr>
<tr>
<td>201</td>
<td>查无数据</td>
</tr>
<tr>
<td>400</td>
<td>参数错误</td>
</tr>
<tr>
<td>404</td>
<td>接口地址不正确</td>
</tr>
<tr>
<td>500</td>
<td>系统维护,请稍候再试</td>
</tr>
<tr>
<td>601</td>
<td>接口未开通</td>
</tr>
<tr>
<td>602</td>
<td>账号停用</td>
</tr>
<tr>
<td>603</td>
<td>余额不足请充值</td>
</tr>
<tr>
<td>604</td>
<td>接口停用</td>
</tr>
<tr>
<td>701</td>
<td>IP地址信息不存在</td>
</tr>
<tr>
<td>702</td>
<td>{ip}为内网IP地址</td>
</tr>
<tr>
<td>999</td>
<td>其他,以实际返回为准</td>
</tr>
</tbody>
</table>