公交路线规划
<h3>接口描述</h3>
<ul>
<li>可根据起终点坐标检索符合条件的公共交通路线规划方案,支持结合业务场景设置不同的公交换乘策略。</li>
</ul>
<h3>请求地址</h3>
<p><code>https://api.jumdata.com/route/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>说明</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>origAddCode</td>
<td>String</td>
<td>否</td>
<td>起点所在行政区域编码 参考国家行政区域编码表</td>
</tr>
<tr>
<td>destAddCode</td>
<td>String</td>
<td>否</td>
<td>终点所在行政区域编码 参考国家行政区域编码表</td>
</tr>
<tr>
<td>origCityCode</td>
<td>String</td>
<td>是</td>
<td>起点所在城市 仅支持citycode,参考国家行政区域编码表 相同时代表同城,不同时代表跨城 譬如西湖区citycode为330106</td>
</tr>
<tr>
<td>destCityCode</td>
<td>String</td>
<td>是</td>
<td>目的地所在城市 仅支持citycode,参考国家行政区域编码表 相同时代表同城,不同时代表跨城 譬如西湖区citycode为330106</td>
</tr>
<tr>
<td>strategy</td>
<td>String</td>
<td>否</td>
<td>公共交通换乘策略 <br/> 可选值:<br/>0:推荐模式,综合权重<br/>1:最经济模式,票价最低<br/>2:最少换乘模式,换乘次数少<br/>3:最少步行模式,尽可能减少步行距离<br/>4:最舒适模式,尽可能乘坐空调车<br/>5:不乘地铁模式,不乘坐地铁路线<br/>7:地铁优先模式,步行距离不超过4KM<br/>8:时间短模式,方案花费总时间最少<br/></td>
</tr>
<tr>
<td>alternativeRoute</td>
<td>String</td>
<td>否</td>
<td>返回方案条数 可传入1-10的阿拉伯数字,代表返回的不同条数</td>
</tr>
<tr>
<td>multiexPort</td>
<td>String</td>
<td>否</td>
<td>地铁出入口数量 <br>0:只返回一个地铁出入口<br>1:返回全部地铁出入口<br></td>
</tr>
<tr>
<td>maxTrans</td>
<td>String</td>
<td>否</td>
<td>最大换乘次数<br>0:直达<br>1:最多换乘1次<br>2:最多换乘2次<br>3:最多换乘3次<br>4:最多换乘4次<br></td>
</tr>
<tr>
<td>nightFlag</td>
<td>String</td>
<td>否</td>
<td>考虑夜班车<br>0:不考虑夜班车<br>1:考虑夜班车<br></td>
</tr>
<tr>
<td>date</td>
<td>String</td>
<td>否</td>
<td>请求日期 例如:2013-10-28</td>
</tr>
<tr>
<td>time</td>
<td>String</td>
<td>否</td>
<td>请求时间 例如:9-54</td>
</tr>
<tr>
<td>showFields</td>
<td>String</td>
<td>否</td>
<td>返回结果控制,用来筛选接口返回结果中是否出现哪些字段。</br>show_fields的使用需要遵循如下规则:</br>1、具体可指定返回的字段类型有:</br>cost</br>navi</br>polyline</br>任选一个或多个作为入参值,即可在返回结果中显示。</br>2、多个值间采用“,”进行分割;</br>3、show_fields未设置、为空时,只返回基础信息类内字段;</br></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;code&quot;: 200,// 返回码,详见返回码说明
&quot;msg&quot;: &quot;成功&quot;,// 返回码对应描述
&quot;taskNo&quot;: &quot;697790392161452073342933&quot;,// 本次请求号
&quot;charge&quot;: true,// 计费标志
&quot;data&quot;: {
&quot;strategyNum&quot;: &quot;2&quot;,//路径规划方案总数
&quot;strategyList&quot;: {
&quot;cost&quot;: {
&quot;taxi_fee&quot;: &quot;32&quot;
},
&quot;distance&quot;: &quot;163755&quot;,//本条路线的总距离,单位:米
&quot;origin&quot;: &quot;120.10910,30.27714&quot;, //起点经纬度
&quot;destination&quot;: &quot;121.63084,29.86607&quot;,//终点经纬度
&quot;transits&quot;: [ //公交方案列表
{
&quot;cost&quot;: {
&quot;duration&quot;: &quot;8040&quot;,
&quot;transit_fee&quot;: &quot;79.000000&quot;
},
&quot;distance&quot;: &quot;179370&quot;,//本条路线的总距离,单位:米
&quot;nightflag&quot;: &quot;&quot;,//0:非夜班车;1:夜班车
&quot;segments&quot;: [
{
&quot;walking&quot;: {//步行方案信息
&quot;distance&quot;: &quot;621&quot;,//每段线路步行距离 单位:米
&quot;origin&quot;: &quot;120.215919,30.294054&quot;,//起点坐标
&quot;destination&quot;: &quot;120.212502,30.290972&quot;,//终点坐标
&quot;duration&quot;: &quot;100000&quot;,//步行预计时间 单位:秒
&quot;cost&quot;: {//设置后可返回方案所需时间及费用成本,需传showFields才可返回
&quot;duration&quot;: &quot;951&quot;//线路耗时,方案总耗时,包含等车时间
},
&quot;steps&quot;: [//步行路段列表
{
&quot;distance&quot;: &quot;87&quot;,//此段路的距离
&quot;road&quot;: &quot;&quot;,//路的名字
&quot;instruction&quot;: &quot;步行87米左转&quot;,//此段路的行走介绍
&quot;duration&quot;: &quot;&quot;,//此段路预计消耗时间 单位:秒
&quot;polyline&quot;: &quot;&quot;,//此段路的坐标
&quot;action&quot;: &quot;&quot;,//步行主要动作
&quot;assistant_action&quot;: &quot;&quot;, //步行辅助动作
&quot;navi&quot;: {//设置后可返回详细导航动作指令。需传showFields才可返回
&quot;assistant_action&quot;: &quot;&quot;,//导航辅助动作指令
&quot;action&quot;: &quot;左转&quot;,//导航主要动作指令
&quot;walk_type&quot;: &quot;0&quot;//算路结果中存在的道路类型:0:普通道路;1:人行横道;3:地下通道;4:过街天桥;5:地铁通道;6:公园;7:广场;8:扶梯;9:直梯;10:索道;11:空中通道;12:建筑物穿越通道;13:行人通道;14:游船路线;15:观光车路线;16:滑道;18:扩路;19:道路附属连接线;20:阶梯;21:斜坡;22:桥;23:隧道;30:轮渡;
},
&quot;polyline&quot;: {//需传showFields才可返回
&quot;polyline&quot;: &quot;120.109055,30.277231;120.108215,30.277187&quot;//设置后可返回分路段坐标点串,两点间用“,”分隔
}
}
]
}
},
{
&quot;railway&quot;: { //火车换乘信息
&quot;trip&quot;: &quot;G195&quot;,//线路车次号
&quot;distance&quot;: &quot;154600&quot;,//该item换乘段的行车总距离
&quot;name&quot;: &quot;G195(北京南-宁波)&quot;,//线路名称
&quot;id&quot;: &quot;101001614253&quot;,//线路id编号
&quot;time&quot;: &quot;2760&quot;,//该线路车段耗时
&quot;type&quot;: &quot;G字头的高铁火车&quot;,//线路车次类型
&quot;departure_stop&quot;: { //火车始发站信息
&quot;adcode&quot;: &quot;330102&quot;,//上车站点所在城市的adcode
&quot;name&quot;: &quot;杭州东&quot;,//上车站点名称
&quot;start&quot;: &quot;0&quot;,//是否始发站,1表示为始发站,0表示非始发站
&quot;location&quot;: &quot;120.212600 30.290851&quot;,//上车站点经纬度
&quot;id&quot;: &quot;B023B08WDR&quot;,//上车站点ID
&quot;time&quot;: &quot;2221&quot;//上车点发车时间
},
&quot;arrival_stop&quot;: { //火车到站信息
&quot;adcode&quot;: &quot;330203&quot;,//下车站点所在城市的adcode
&quot;name&quot;: &quot;宁波&quot;,//下车站点名称
&quot;location&quot;: &quot;121.536807 29.861967&quot;,//下车站点经纬度
&quot;end&quot;: &quot;1&quot;,//是否为终点站,1表示为终点站,0表示非终点站
&quot;id&quot;: &quot;B023E0YC7M&quot;,//下车站点ID
&quot;time&quot;: &quot;2307&quot;//到站时间,如大于24:00,则表示跨天
},
&quot;via_stop&quot;: { //途径站点信息,extensions=all时返回
&quot;name&quot;: &quot;宁波&quot;,//途径站点的名称
&quot;location&quot;: &quot;121.536807 29.861967&quot;,//途径站点的坐标点
&quot;id&quot;: &quot;B023E0YC7M&quot;,//途径站点的ID
&quot;time&quot;: &quot;2307&quot;//途径站点的进站时间,如大于24:00,则表示跨天
&quot;wait&quot;: &quot;5&quot;,//途径站点的停靠时间,单位:分钟
},
&quot;alters&quot;: { //聚合的备选方案,extensions=all时返回
&quot;name&quot;: &quot;宁波&quot;,//备选方案ID
&quot;id&quot;: &quot;B023E0YC7M&quot;//备选线路名称
},
&quot;spaces&quot;: [//仓位及价格信息
{
&quot;code&quot;: &quot;&quot;,//仓位编码
&quot;cost&quot;: &quot;120&quot;//仓位费用
}
]
}
},
{
&quot;bus&quot;: {//公交方案信息
&quot;buslines&quot;: [//步行路段列表
{
&quot;start_time&quot;: &quot;&quot;,//首班车时间 格式如:0600,代表06:00
&quot;distance&quot;: &quot;2022&quot;,//公交行驶距离 单位:米
&quot;bustimetag&quot;: &quot;0&quot;,
&quot;id&quot;: &quot;330200021780&quot;,//公交路线id
&quot;type&quot;: &quot;地铁线路&quot;,//公交类型 格式如:地铁线路
&quot;bus_time_tips&quot;: &quot;&quot;,
&quot;name&quot;: &quot;轨道交通2号线(栎社国际机场--红联)&quot;,//公交路线名称
&quot;end_time&quot;: &quot;&quot;,//末班车时间 格式如:2300,代表23:00
&quot;via_num&quot;: &quot;1&quot;,//此段途经公交站数
&quot;departure_stop&quot;: { //此段起乘站信息 格式如:中关村
&quot;name&quot;: &quot;宁波火车站&quot;,//站点名字
&quot;location&quot;: &quot;121.537022,29.862141&quot;,//站点经纬度
&quot;id&quot;: &quot;330200021780011&quot;,//站点id
&quot;entrance&quot;: {//入口信息
&quot;name&quot;: &quot;B口&quot;,//入口名称
&quot;location&quot;: &quot;121.537102,29.860975&quot;//入口经纬度
},
&quot;exit&quot;: {//出口信息
&quot;name&quot;: &quot;B口&quot;,//出口名称
&quot;location&quot;: &quot;121.537102,29.860975&quot;//出口经纬度
}
},
&quot;arrival_stop&quot;: {//此段下车站 格式如:中关村
&quot;name&quot;: &quot;鼓楼&quot;, //站点名字
&quot;location&quot;: &quot;121.548970,29.873914&quot;,//站点经纬度
&quot;id&quot;: &quot;330200021780013&quot;//站点id
},
&quot;via_stops&quot;: [ //此段途经公交站点列表
{
&quot;name&quot;: &quot;城隍庙&quot;, //途径公交站点信息
&quot;location&quot;: &quot;121.548778,29.867124&quot;,//公交站点经纬度
&quot;id&quot;: &quot;330200021780012&quot; //公交站点编号
}
],
&quot;cost&quot;: {//设置后可返回方案所需时间及费用成本,需传showFields才可返回
&quot;duration&quot;: &quot;1073&quot;//线路耗时,方案总耗时,包含等车时间
},
&quot;polyline&quot;: {//需传showFields才可返回
&quot;polyline&quot;: &quot;120.109629,30.281911;120.111323,30.281943;&quot;//设置后可返回分路段坐标点串,两点间用“,”分隔
}
}
]
},
&quot;taxi&quot;: {//出租车方案信息
&quot;price&quot;: &quot;338&quot;,//打车预计花费金额
&quot;drivetime&quot;: &quot;&quot;,//打车预计花费时间
&quot;distance&quot;: &quot;&quot;,//打车距离
&quot;polyline&quot;: &quot;&quot;,//线路点集合,通过show_fields控制返回与否
&quot;startpoint&quot;: &quot;&quot;,//打车起点经纬度
&quot;startname&quot;: &quot;&quot;,//打车起点名称
&quot;endpoint&quot;: &quot;&quot;,//打车终点经纬度
&quot;endname&quot;: &quot;&quot;,//打车终点名称
}
}
]
}
]
}
}
}
</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>202</td>
<td>查询信息存在非法内容</td>
</tr>
<tr>
<td>203</td>
<td>规划点(包括起点、终点、途经点)不在中国陆地范围内</td>
</tr>
<tr>
<td>204</td>
<td>划点(起点、终点、途经点)附近搜不到路</td>
</tr>
<tr>
<td>205</td>
<td>路线计算失败,通常是由于道路连通关系导致</td>
</tr>
<tr>
<td>206</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>