前言
1.相关API
接口地址:https://api.jisuapi.com/transit/line 返回格式:JSON,JSONP 请求方法:GET POST 请求示例:
https://api.jisuapi.com/transit/line?cityid=382&transitno=86&appkey=yourappkey
请求参数:
参数名称 | 类型 | 必填 | 说明 |
---|---|---|---|
city | string | 否 | 城市 cityid city任选其一 |
cityid | int | 否 | 城市ID |
transitno | string | 是 | 车次 查询地铁加地铁2个字 |
返回参数:
参数名称 | 类型 | 说明 |
---|---|---|
transitno | string | 车次 |
startstation | string | 始发站 |
endstation | string | 终点站 |
starttime | string | 最早发车时间 |
endtime | string | 最晚发车时间 |
price | string | 票价 |
maxprice | string | 最高票价 |
sequenceno | string | 顺序 |
station | string | 站点 |
lat | string | 纬度 百度坐标系 |
lng | string | 经度 |
buscompany | string | 所属公交公司 |
timetable | string | 排班表 |
subway | string | 地铁换乘 |
API错误码:
代号 | 说明 |
---|---|
201 | 公交车次为空 |
202 | 城市ID为空 |
203 | 起点为空 |
204 | 终点为空 |
205 | 城市为空 |
206 | 公交站点为空 |
207 | 地址为空 |
210 | 没有信息 |
系统错误码:
代号 | 说明 |
---|---|
101 | APPKEY为空或不存在 |
102 | APPKEY已过期 |
103 | APPKEY无请求此数据权限 |
104 | 请求超过次数限制 |
105 | IP被禁止 |
106 | IP请求超过限制 |
107 | 接口维护中 |
108 | 接口已停用 |
2.相关案例
请求API:https://api.jisuapi.com/transit/line?cityid=382&transitno=86&appkey=你的密钥
返回JSON:
{
"status": 0,
"msg": "ok",
"result": [
{
"transitno": "86路",
"startstation": "西溪竞舟苑",
"endstation": "景芳小区",
"starttime": "05:45",
"endtime": "21:45",
"price": "2",
"maxprice": "2.00",
"list": [
{
"sequenceno": 1,
"station": "西溪竞舟苑",
"lat": "30.28806",
"lng": "120.06484"
},
{
"sequenceno": 22,
"station": "和平广场",
"lat": "30.29524",
"lng": "120.18258"
},
{
"sequenceno": 25,
"station": "濮家新村",
"lat": "30.29059",
"lng": "120.20558"
},
{
"sequenceno": 29,
"station": "景芳小区",
"lat": "30.27631",
"lng": "120.21277"
}
]
},
{
"transitno": "86路",
"startstation": "景芳小区",
"endstation": "西溪竞舟苑",
"starttime": "05:45",
"endtime": "21:45",
"price": "2",
"maxprice": "2.00",
"list": [
{
"sequenceno": 1,
"station": "景芳小区",
"lat": "30.27628",
"lng": "120.21274"
},
{
"sequenceno": 2,
"station": "濮家新村",
"lat": "30.28873",
"lng": "120.20592"
},
{
"sequenceno": 25,
"station": "西溪竞舟苑",
"lat": "30.28807",
"lng": "120.06484"
}
]
}
]
}
一、站点搜索
1.wxml
<!--pages/search/search.wxml-->
<view class='all'>
<view class='top'>
<view class='topsearch'>
<input type='text' placeholder='请搜索线路' bindinput="setLine" focus='true'></input>
</view>
<view class='searchbtn'>
<image src="../../imgs/search-selected.png" bindtap='search'></image>
</view>
</view>
<view class='mdle'>
<view class='middle' wx:for="{{lines}}" wx:key="" wx:for-index="idx1" wx:for-item="line">
<view bindtap='jumpLineDetail' data-line='{{line.transitno}}'>
<view class='middletop'>{{line.transitno}}</view>
<view class='middlebottom'>
<view class='middlebottom1'>{{line.startstation}}</view>
<view class='middlebottom2'>
<image src="../../imgs/doublearrow.png"></image>
</view>
<view class='middlebottom1'>{{line.endstation}}</view>
</view>
</view>
</view>
</view>
</view>
2.js
// pages/search/search.js
var app = getApp()
var config = require('../../libs/config.js');
Page({
/**
* 页面的初始数据
*/
data: {
city: "",//当前城市
line: "",//用户输入的线路
lines: [] //搜索得到的线路集合
},
/**
* 生命周期函数--监听页面加载
*/
onl oad: function (options) {
var _this = this
_this.setData({
city: options.city,
})
},
getLine() {
var _this = this
app.showLoading("搜索数据中")
wx.request({
url: 'http://api.jisuapi.com/transit/line',
data: {
appkey: config.Config.busappkey,
city: _this.data.city,
transitno : _this.data.line
},
header: {
'content-type': 'application/json' // 默认值
},
success: function (res) {
console.log(res)
var lines = res.data.result
var temp = []
var linesTemp = []
if (lines.length > 0) {
for (var i = 0; i < lines.length; i++) {
if (temp.indexOf(lines[i].transitno) == -1) {
lines[i].startstation = lines[i].list[0].station;
lines[i].endstation = lines[i].list[lines[i].list.length - 1].station
temp.push(lines[i].transitno)
linesTemp.push(lines[i]);
}
}
}
_this.setData({
lines: linesTemp
})
console.log("搜索数据", _this.data.lines)
},
fail: function (res) {
console.log(res);
},
complete: function (res) {
app.hideLoading()
}
})
},
setLine(e) {
var _this = this
var value = e.detail.value
_this.setData({
line: value
})
},
search(e) {
this.getLine()
},
jumpLineDetail(e) {
var _this = this
var line = e.currentTarget.dataset.line
var station = e.currentTarget.dataset.station || ''
var city = _this.data.city
wx.navigateTo({
url: '../lineDetail/lineDetail?line=' + line + '&city=' + city + '&station=' + station
})
},
})
3.效果
总结
本篇获取周边站址的API是第三方API,第三方API其实在应用中很常见比如:车牌识别、图片搜索、短信接口、语音识别、语音合成、天气数据、地铁查询、实时物流、飞机查询等等。
相关地图API接口:
- 百度地图- 百度地图提供了Android, iOS版本的SDK和JavaScript API,可进行定位、地图、数据、出行、鹰眼轨迹和分析服务。
- 高德地图- 高德地图提供了JavaScript和web服务API,Android和iOS SDK,支持地图,定位,搜索,路线规划,导航和室内地图等。
- 腾讯地图- 腾讯地图提供了JavaScript API,Android和iOS SDK,支持定位,地图,地点搜索,路线和导航等。
- 天地图- 天地图提供了H5 API和JavaScript API等web API,同时提供了Android和iOS SDK,支持基础地图服务,图层管理,地图覆盖物,地图工具,地名搜索和出行规划服务。
- 图吧地图- 图吧提供了JavaScript和Flash API,Android和iOS SDK,支持定位,地址解析,位置标注,位置截图,路线规划,周边查询,兴趣点搜索和在线导航。