百度地图_驾车路线规划
<h3>接口描述</h3>
<ul>
<li>根据起终点坐标规划驾车出行路线和耗时,支持:1.支持10个途经点;2.支持设置偏好:常规路线、不走高速、躲避拥堵;3.支持传入起点车头方向,辅助判断起点所在正逆向车道,辅助更准确算路。</li>
</ul>
<h3>请求地址</h3>
<p><code>https://api.jumdata.com/route/baidu/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><div style="width:400px">说明</div>说明</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>origin</td>
<td>String</td>
<td>是</td>
<td>起点经纬度,经度在前,纬度在后,经度和纬度用","分割,经纬度小数点后不得超过6位</td>
</tr>
<tr>
<td>destination</td>
<td>String</td>
<td>是</td>
<td>目的地经纬度,经度在前,纬度在后,经度和纬度用","分割,经纬度小数点后不得超过6位</td>
</tr>
<tr>
<td>originUid</td>
<td>String</td>
<td>否</td>
<td>起点uid,POI 的 uid(请尽量填写uid,将提升路线规划的准确性)</td>
</tr>
<tr>
<td>destinationUid</td>
<td>String</td>
<td>否</td>
<td>终点uid,POI 的 uid(在请尽量填写uid,将提升路线规划的准确性)</td>
</tr>
<tr>
<td>plateNumber</td>
<td>String</td>
<td>否</td>
<td>车牌号</td>
</tr>
<tr>
<td>waypoints</td>
<td>String</td>
<td>否</td>
<td>途经点,支持10个以内的有序途经点。多个途经点坐标按顺序以英文竖线符号分隔。</td>
</tr>
<tr>
<td>tactics</td>
<td>String</td>
<td>否</td>
<td>路线偏好,默认值:0<br/>0 - 常规路线(时间最短)<br/>1 - 不走高速<br/>2 - 躲避拥堵<br/>3 - 最短距离<br/>4 - 花费最少<br/>5 - 大路优先<br/>6 - 表示避开轮渡<br/></td>
</tr>
<tr>
<td>originRoadType</td>
<td>String</td>
<td>否</td>
<td>起点道路类型,默认值:0<br/>0 - 普通道路<br/>1 - 在高架上<br/>2 - 高架下<br/>3 - 主路<br/>4 - 辅路<br/></td>
</tr>
<tr>
<td>gpsDirection</td>
<td>String</td>
<td>否</td>
<td>起点的定位方向,车头方向为与正北方向顺时针夹角,取值范围[0,359]。该参数用于辅助判断起点所在正逆向车道,提高算路准确率。 当speed>1.5米/秒且gpsDirection存在时,采用该方向。gpsDirection并不代表需填写从gps获取的方向,可以填入校正后的方向。请填写尽量准确的方向,其准确性很大程度决定了计算的精度。</td>
</tr>
<tr>
<td>radius</td>
<td>String</td>
<td>否</td>
<td>起点的定位精度,配合gpsDirection字段使用,取值范围[0,2000]</td>
</tr>
<tr>
<td>speed</td>
<td>String</td>
<td>否</td>
<td>起点车辆的行驶速度,配合gpsDirection字段使用,单位:米/秒 当speed>1.5米/秒且gpsDirection存在时,采用gpsDirection的方向</td>
</tr>
<tr>
<td>coordType</td>
<td>String</td>
<td>否</td>
<td>输入坐标类型,默认bd09ll<br/>bd09ll - 百度经纬度坐标<br/>bd09mc - 百度墨卡托坐标<br/>gcj02 - 国测局加密坐标<br/>wgs84 - gps设备获取的坐标<br/></td>
</tr>
<tr>
<td>retCoordType</td>
<td>String</td>
<td>否</td>
<td>输出坐标类型,默认bd09ll<br/>bd09ll - 百度经纬度坐标<br/>gcj02 - 国测局加密坐标</td>
</tr>
<tr>
<td>stepsInfo</td>
<td>String</td>
<td>否</td>
<td>是否下发step详情<br/>1 - 下发step详情<br/>0 - 不下发step详情</td>
</tr>
<tr>
<td>originBindStategy</td>
<td>String</td>
<td>否</td>
<td>起点绑路策略,默认值0<br/>0 - 起点绑路不剔除封闭道路<br/>1 - 起点绑路剔除封闭道路</td>
</tr>
<tr>
<td>destBindStategy</td>
<td>String</td>
<td>否</td>
<td>终点绑路策略,默认值0<br/>0 - 起点绑路不剔除封闭道路<br/>1 - 起点绑路剔除封闭道路</td>
</tr>
</tbody>
</table>
<h3>签名算法</h3>
<pre><code>sign = sha256( appId + appSecret + timestamp)</code></pre>
<p>用服务商分配的 appId、服务商分配的 appSecret,当前时间毫秒数 timestamp,按上述顺序拼接成字符串,再进行 sha256 哈希得到。如下:</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;charge&quot;: true,//计费标志,
&quot;code&quot;: 200,//返回码,详见返回码说明
&quot;msg&quot;: &quot;成功&quot;,//返回码对应描述
&quot;taskNo&quot;: &quot;206443763220370789500784&quot;,//本次请求号
&quot;data&quot;: {
&quot;origin&quot;: {
&quot;lng&quot;: 120.10909996613,//起点经度
&quot;lat&quot;: 30.277140666345 //起点纬度
},
&quot;destination&quot;: {
&quot;lng&quot;: 120.17931026448,//终点经度
&quot;lat&quot;: 30.253260194034 //终点纬度
},
&quot;routes&quot;: [
{
&quot;duration&quot;: 2141,//线路耗时,单位:秒
&quot;traffic_condition&quot;: 1,//路线的整体路况评价,取值范围,0: 无路况,1: 畅通,2:缓行,3:拥堵,4:严重拥堵
&quot;distance&quot;: 9752,//方案距离,单位:米
&quot;restriction_info&quot;: {
&quot;status&quot;: 1 //限行状态,0:不限行,1:已规避限行的路线合法,2:无法规避限行的非法路线
},
&quot;toll&quot;: 0,//路线的过路费预估,单位:元
&quot;steps&quot;: [//路线分段
{
&quot;duration&quot;: 6,//路段耗时,单位:秒
&quot;path&quot;: &quot;120.10909988757,30.277140615506;120.10903996024,30.277280647661&quot;,//分段坐标
&quot;start_location&quot;: {
&quot;lng&quot;: &quot;120.10909988757&quot;,//分段起点经度
&quot;lat&quot;: &quot;30.277140615506&quot; //分段起点纬度
},
&quot;traffic_condition&quot;: [//分段路况详情
{
&quot;status&quot;: 0,//路况指数。取值范围,0: 无路况,,1: 畅通,,2: 缓行,,3: 拥堵,,4: 严重拥堵,
&quot;geo_cnt&quot;: 1 //从当前坐标点开始,path中路况相同的坐标点个数
}
],
&quot;road_types&quot;: &quot;6&quot;,//路段途经的道路类型列表,若途经多个路段类别,将用英文逗号&quot;,&quot;分隔。枚举值:返回0-9之间的值。0:高速路,1:城市高速路,2:国道,3:省道,4:县道,5:乡镇村道,6:其他道路,7:九级路,8:航线(轮渡),9:行人道路。
&quot;distance&quot;: 16,//路段距离,单位:米
&quot;instruction&quot;: &quot;从&lt;b&gt;起点&lt;/b&gt;向西北方向出发,行驶20米,&lt;b&gt;左转&lt;/b&gt;&quot;,//路段描述
&quot;road_type&quot;: 6,//分段的道路类型。枚举值:返回0-9之间的值。0:高速路,1:城市高速路,2:国道,3:省道,4:县道,5:乡镇村道,6:其他道路,7:九级路,8:航线(轮渡),9:行人道路。
&quot;end_location&quot;: {
&quot;lng&quot;: &quot;120.10903996024&quot;,//分段终点经度
&quot;lat&quot;: &quot;30.277280647661&quot; //分段终点纬度
},
&quot;turn&quot;: 7,//机动转向点,包括基准八个方向、环岛、分歧等。枚举值,返回0-16之间的一个值,共17个枚举值。分别代表的含义是,0:无效,1:直行,2:右前方转弯,3:右转,4:右后方转弯,5:掉头,6:左后方转弯,7:左转,8:左前方转弯,9:左侧,10:右侧,11:分歧-左,12:分歧中央,13:分歧右,14:环岛,15:进渡口,16:出渡口。
&quot;leg_index&quot;: 0,//途经点序号,途经点序号为从0开始的整数,用于标识step所属的途经点路段,如:若该step属于起点至第一个途经中的路段,则其leg_index为0
&quot;direction&quot;: 11 //进入道路的角度。返回值在0-11之间的一个值,共12个枚举值,以30度递进,即每个值代表角度范围为30度;其中返回&quot;0&quot;代表345度到15度,以此类推,返回&quot;11&quot;代表315度到345度&quot;;分别代表的含义是:0-[345°-15°];1-[15°-45°];2-[45°-75°];3-[75°-105°];4-[105°-135°];5-[135°-165°];6-[165°-195°];7-[195°-225°];8-[225°-255°];9-[255°-285°];10-[285°-315°];11-[315°-345°],注:角度为与正北方向顺时针夹角
}
]
}
]
}
}</code></pre>
<h3>错误返回样例</h3>
<pre><code>{
&quot;msg&quot;: &quot;起点经纬度不能为空&quot;,
&quot;code&quot;: 400
}</code></pre>
<h3>返回字段说明</h3>
<table>
<thead>
<tr>
<th>字段名</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>code</td>
<td>返回码,详见返回码说明</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类型,详见data返回字段说明</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>606</td>
<td>调用超限,请稍候再试</td>
</tr>
<tr>
<td>607</td>
<td>ip不在白名单</td>
</tr>
<tr>
<td>609</td>
<td>请求过于频繁,请稍候再试</td>
</tr>
<tr>
<td>610</td>
<td>请求超时</td>
</tr>
<tr>
<td>999</td>
<td>其他,以实际返回为准</td>
</tr>
</tbody>
</table>