百度地图_骑行路线规划
<h3>接口描述</h3>
<ul>
<li>根据起终点坐标规划骑行出行路线和耗时,支持普通自行车和电动自行车出行方式。</li>
</ul>
<h3>请求地址</h3>
<p><code>https://api.jumdata.com/route/baidu/ride</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>ridingType</td>
<td>String</td>
<td>否</td>
<td>骑行类型,默认0<br/>0 - 普通自行车<br/>1 - 电动自行车</td>
</tr>
<tr>
<td>roadPrefer</td>
<td>String</td>
<td>否</td>
<td>算路方案,默认0<br/>0:默认路线<br/>3:无逆行且无阶梯的算路方案</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>
</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;206443763220370789534632&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;distance&quot;: 9752,//方案距离,单位:米
&quot;steps&quot;: [//路线分段
{
&quot;duration&quot;: 6,//路段耗时,单位:秒
&quot;name&quot;: &quot;莲花街&quot;,//道路名称
&quot;road_types&quot;: &quot;4&quot;,//路段途经的道路类型列表,若途经多个路段类别,将用英文逗号&quot;,&quot;分隔。枚举值:返回0-9之间的值。0:高速路,1:城市高速路,2:国道,3:省道,4:县道,5:乡镇村道,6:其他道路,7:九级路,8:航线(轮渡),9:行人道路。
&quot;turn_type&quot;: &quot;左转&quot;,//行驶转向方向,如“直行”、“左前方转弯”
&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;distance&quot;: 16,//路段距离,单位:米
&quot;instruction&quot;: &quot;从&lt;b&gt;起点&lt;/b&gt;向西北方向出发,&lt;b&gt;左转&lt;/b&gt;&quot;,//路段描述
&quot;end_location&quot;: {
&quot;lng&quot;: &quot;120.10903996024&quot;,//分段终点经度
&quot;lat&quot;: &quot;30.277280647661&quot; //分段终点纬度
},
&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>