前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-05线路查询

【愚公系列】2022年04月 微信小程序-项目篇(公交查询)-05线路查询

作者头像
愚公搬代码
发布2022-04-30 09:14:52
发布2022-04-30 09:14:52
36200
代码可运行
举报
文章被收录于专栏:历史专栏历史专栏
运行总次数:0
代码可运行

前言

1.相关API

接口地址:https://api.jisuapi.com/transit/line 返回格式:JSON,JSONP 请求方法:GET POST 请求示例:

代码语言:javascript
代码运行次数:0
复制
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:

代码语言:javascript
代码运行次数:0
复制
{
    "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

代码语言:javascript
代码运行次数:0
复制
<!--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

代码语言:javascript
代码运行次数:0
复制
// pages/search/search.js
var app = getApp()
var config = require('../../libs/config.js');
Page({

  /**
   * 页面的初始数据
   */
  data: {
    city: "",//当前城市
    line: "",//用户输入的线路
    lines: [] //搜索得到的线路集合
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: 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,支持定位,地址解析,位置标注,位置截图,路线规划,周边查询,兴趣点搜索和在线导航。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/04/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 1.相关API
    • 2.相关案例
  • 一、站点搜索
    • 1.wxml
    • 2.js
    • 3.效果
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档