百度地图_公交路线规划
<h3>接口描述</h3>
<ul>
<li>根据起终点坐标规划同城公共交通出行路线和耗时,支持公交、地铁出行方式。</li>
</ul>
<h3>请求地址</h3>
<p><code>https://api.jumdata.com/route/baidu/public-transit</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>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;taxi&quot;: {
&quot;duration&quot;: 2143,//出租车预计耗时
&quot;distance&quot;: 11043,//出租车预计里程数
&quot;remark&quot;: &quot;全程11.0公里;3.0公里起步;燃油附加费0.0元;里程超过10.0公里,超过部分每公里收3.8元。&quot;,//出租车备注信息
&quot;detail&quot;: [//出租车的详细信息
{
&quot;total_price&quot;: 33,//总价(元)
&quot;start_price&quot;: 11,//起步价(元)
&quot;km_price&quot;: 2.5,//每公里价格(元)
&quot;desc&quot;: &quot;全天&quot; //白天还是夜间
}
]
},
&quot;routes&quot;: [//路线方案
{
&quot;duration&quot;: 3159,//本条路线的总耗时(秒)
&quot;line_price&quot;: [//车票详细信息,起终点为境内地区同城时此字段为一个数组,数组中的每一项都有line_price 和line_type 两个字段;起终点为境内跨城时,该字段为一个空的数组。
{
&quot;line_price&quot;: 4,//价格(元)
&quot;line_type&quot;: 1 //票类型,0:公交票价,1: 地铁票价
}
],
&quot;traffic_condition&quot;: 1,//路线的整体路况评价,取值范围,0: 无路况,1: 畅通,2:缓行,3:拥堵
&quot;distance&quot;: 10724,//本条路线的总距离(米)
&quot;price&quot;: 4,//本条路线的总票价(元),
&quot;steps&quot;: [//路线分段,数组,数组中的每一项是一步(step)。每条路线都由多个step组成
[
{
&quot;duration&quot;: 1143,//路段耗时(秒)
&quot;path&quot;: &quot;120.11389326861,30.274863241525;120.11419014904,30.274869302495;120.11419018397,30.274994060518;120.11419021519,30.275103223821;&quot;,//路线坐标
&quot;start_location&quot;: {
&quot;lng&quot;: 120.11390226738,//本step 起点经度
&quot;lat&quot;: 30.27487098507 //本step 起点纬度
},
&quot;distance&quot;: 1339,//路段距离(米)
&quot;instruction&quot;: &quot;步行1.3公里&quot;,//描述
&quot;end_location&quot;: {
&quot;lng&quot;: 120.11779031878,//本step 终点经度
&quot;lat&quot;: 30.282168927515 //本step 终点纬度
},
&quot;type&quot;: 5,//路段出行方式,1:火车,2:飞机,3:公交,4:驾车,5:步行,6:大巴
&quot;vehicle&quot;: {
&quot;start_name&quot;: &quot;&quot;,//公交线路起点名称
&quot;start_time&quot;: &quot;&quot;,//公交线路首班车时间
&quot;direct_text&quot;: &quot;&quot;,//路线方向说明
&quot;stop_num&quot;: 0,//路段经过的站点数量
&quot;total_price&quot;: 0,//价格
&quot;name&quot;: &quot;&quot;,//公交路线名称
&quot;end_time&quot;: &quot;&quot;,//公交线路的末班车时间
&quot;zone_price&quot;: 0,//区间价
&quot;end_name&quot;: &quot;&quot;,//公交线路终点名称
&quot;type&quot;: 0 //公交线路类型,0:普通日行公交车;1:地铁、轻轨;2:机场巴士(前往机场);3:有轨电车;4:机场巴士(从机场返回);5:旅游线路车;6:夜班车;7:机场巴士(机场之间);8:轮渡;9:其他;10:快车;11:慢车;12:机场快轨(前往机场);13:机场快轨(从机场返回);14:机场轨道交通环路
}
}
]
]
}
]
}
}</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>