ouc_移动软件开发_实验二

一、实验目标

1、掌握服务器域名配置和临时服务器部署;2、掌握 wx.request 接口的用法。

二、实验步骤

1.准备工作:

(1)登录和风天气官网并完成注册,并在应用管理中创建一个新的应用,获取属于自己的开发版(非商业版)和风天气的Key,将其保存至记事本中。

(2)在和风天气开发文档中选中实时天气url并进行获取

(3)获取实时天气API后我们会发现更新后的和风天气已经不能像S6版本一样直接输入城市名来获取当地天气了,所以我们还得准备获取地区id的途径

(4)我们可以通过获取城市信息从而取得城市的id,点击城市信息查询并且获取对应url

(5).准备和风天气提供的不同天气情况对应的图标,并且将所获取的对应url列入到微信公众平台中小程序的request合法域名中

2.完成准备工作,开始编写代码,完成基础的文件创建后,首先进行小程序UI的设计,相关代码及注释如下

index.wxml源码

<!-- 将所有组件放进view里面 -->
<view class="container">
<!-- 区域1:地区选择器 -->
    <picker mode='region' bindchange='changeRegion'>
        <view>{{region}}</view>
    </picker>
<!-- 区域2:文本区域 -->
    <text>{{now.temp}}℃  {{now.text}}</text>
<!-- 区域3:图片区域 -->
    <image src="/images/weather_icon_s2/{{now.icon}}.png"></image>
<!-- 区域4:多行天气信息 -->
    <view class="detial">
      <view class="bar">
        <view class="box">湿度</view>
        <view class="box">气压</view>
        <view class="box">能见度</view>
        </view>
      <view class="bar">
        <view class="box">{{now.humidity}}%</view>
        <view class="box">{{now.pressure}}hpa</view>
        <view class="box">{{now.vis}}公里</view>
        </view>
      <view class="bar">
        <view class="box">风向</view>
        <view class="box">风速</view>
        <view class="box">风力</view>
      </view>
      <view class="bar">
        <view class="box">{{now.windDir}}</view>
        <view class="box">{{now.windSpeed}}km/h</view>
        <view class="box">{{now.windScale}}级</view>
      </view>
    </view>
</view>

index.wxss源码

.container{
  /* 设置容器的高度 */
    height: 100vh;
    /* 设置容器的排列方式为垂直排列*/
    display: flex;
    flex-direction: column;
    /* 设置项目在交叉轴中居中对齐 */
    align-items: center;
    justify-content: space-around;
    /* 保证页面没有空行 */
}
/* 对使用detail这个类的部分代码进行属性设置*/
.detail{
  width: 100%;
  display: flex;
  flex-direction: column;
}
​
.bar{
  display: flex;
  flex-direction: row;
  /* 设置外边距 */
  margin:20rpx 0;
}
​
.box{
  width: 20vh;
  /* 使用33.3%无法生效,只能自己设置宽度 */
  text-align: center;
  /* 还是text-align无法生效? */
}
​
text{
  font-size: 80rpx;
  color: #3C5F81;
}
​
image{
  /* 给图像设置合适宽度 */
  /* 原像素64*64,使其成比例增长 */
  width:512rpx;
  height: 512rpx;
}

app.json源码

{
  "pages": [
    "pages/index/index"
  ],
  "window": {
    "navigationBarBackgroundColor": "#3883FA",
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "今日天气",
    "backgroundColor": "#eeeeee",
    "backgroundTextStyle": "light",
    "enablePullDownRefresh": false
  },
  "sitemapLocation": "sitemap.json"
}

3.在进行UI设计之后,通过index.js对其进行内容的实现,下列是index.js的源码

index.js源码

// pages/index/index.js
Page({
​
  /**
   * 页面的初始数据
   */
  data: {
    region:['山东省','青岛市','崂山区'],/*设置初始显示的地区*/
    now:''/*用于储存通过和风天气获取的相关天气信息*/
  },
/*对changeRegion进行功能实现*/
changeRegion:function(e){
  this.setData({
    region:e.detail.value/*将region的值设置为所选择的地区*/
  })
  this.getWeather();//获取地区天气  
},
​
/*对getWeather进行功能实现*/
getWeather:function(){
  var that=this;//this不可以直接在wxAPI函数内部使用
  /*let与var的区别:https://www.jianshu.com/p/9f7f053f7204*/ 
  wx.request({
    url: 'https://geoapi.qweather.com/v2/city/lookup?',
    data:{
      location:that.data.region[2],
      key:'9c011a9ad3074d188c24aa57d28c5505'
    },//首先通过在准备阶段准备的城市信息查询url获得城市对应的id,可能会出现重名等各种情况,从而导致报错,所以我们选择精确到市
    success:function(res){
      console.log(res.data)
      wx.request({//通过查询到的ID进行中的第一个位置进行大致天气搜索
        url: 'https://devapi.qweather.com/v7/weather/now?',
        data:{
          location:res.data.location[0].id,//将我们获取到的城市的id的第一个区(0)作为该城市的天气查询id
          key:'9c011a9ad3074d188c24aa57d28c5505'
        },
        success:function(e){
          // console.log(e.data.now)
          that.setData({now:e.data.now})//通过城市id与key查询到城市的相关天气情况并且存储在now中
        }
      })
    }
  })
},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getWeather()//检测页面开始运行时就调用getWeather函数,其参数为我们所给的初始值(region)
  },
​
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
​
  },
​
  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
​
  },
​
  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
​
  },
​
  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
​
  },
​
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
​
  },
​
  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
​
  },
​
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
​
  }
})

4.上传1.0.0版本并且设置为用户体验版,以便于后续更新与维护

三、程序运行结果

程序运行结果截图:

运行结果:程序成功运行!

1.加载界面

2.初始界面

3.更换地区界面

 

 

4.更换地区后的界面

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值