2024年夏季《移动软件开发》实验二:天气查询小程序

2024年夏季《移动软件开发》实验报告

注意事项:

1、本实验中,需要使用和风天气 API,需要注册用户,大家请自行阅读和风天气官 方文档:https://dev.qweather.com/docs/api/weather/weather-now/

2、实验中需要的天气图片、utils.js 下载地址为:https://gaopursuit.oss-cnbeijing.aliyuncs.com/2022/demo2_file.zip

3、因为要向和风天气发送请求,如果保持登录状态将无法发送请求,切换为游客模式即可。

一、实验目标

1、掌握服务器域名 配置和临时服务器部署;

2、掌握 wx.request 接口的用法。

二、实验步骤

1.首先新建images pages index 文件夹及app.js app.json app.wxss文件

如下图所示:

在这里插入图片描述

2.在app.json 中添加背景颜色等信息,修改界面样式

app.json代码如下:

{
  "pages": [
    "pages/index/index",
    "pages/logs/logs",
    "pages/aaa"
  ],
  "window": {
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "今日天气",
    "navigationBarBackgroundColor": "#3883FA"
  }
}

结果如下:

在这里插入图片描述

3.在index.wxss 文件中添加小程序信息,包括地区名、温度、天气等,并添加恰当的wxss样式,调整页面布局大小等

地区初始化为“北京市,北京市,东城区”,N/A图片是在网上找的一张图,表示暂时没有天气信息,其他信息为0;

index.wxml代码如下:

<view class='container'>
<!-- 选择地区 -->
<picker>
  <view style='font-size:50rpx'>北京市,北京市,东城区</view>
</picker>
<!-- 文本区域 -->
<text>0℃</text>
<!-- 图片区域 -->
<image src="/images/1.svg"></image>
<!-- 多行天气信息 -->
<view class='detail'>
  <view class='bar'>
    <view class='box'>湿度</view>
    <view class='box'>气压</view>
    <view class='box'>能见度</view>
  </view>
  <view class='bar'>
    <view class="box">0%</view>
      <view class="box">0hPa</view>
    <view class='box'>0</view>
  </view>
  <view class='bar'>
    <view class='box'>风向</view>
    <view class='box'>风速</view>
    <view class='box'>风力</view>
  </view>
  <view class='bar'>
    <view class="box">0</view>
      <view class="box">0 Km/h</view>
      <view class="box">0 级</view>

  </view>
</view>
</view>

index.wxss代码如下:

.container{
  height:100vh;
  display:flex;
  flex-direction:column;
  align-items:center;

}
.detail{
  width:100%;
  display:flex;
  flex-direction:column;
}
.bar{
  display:flex;
  flex-direction:row;
  margin:20rpx 0;
}
.box{
  width:33.3%;
  text-align:center;
}
text{
  font-size:80rpx;
  color:#3C5F81;
}
image{
  width:300rpx;
}

结果如下:

在这里插入图片描述

4.在app.wxss文件中调整页面布局,使信息分散一些,不凑在一起

app.wxss代码如下:

/**app.wxss**/
.container {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  padding: 200rpx 0;
  box-sizing: border-box;
} 

结果如下:

在这里插入图片描述

5.在index.wxml的“选择地区”里选择picker中的region,并添加bindchange函数,写入index.js文件中

picker为从底部弹起的滚动选择器,本程序选用其中的省市区选择器;

bindchange为函数,可以更换城市信息,要自己写;

index.wxml更改的代码如下:

<!-- 选择地区 -->
<picker mode='region' bindchange='changeRegion'>
  <view style='font-size:50rpx'>北京市,北京市,东城区</view>
</picker>

index.js代码如下:

 data: {
    region:['北京市','北京市','东城区']
  },
  changeRegion:function(e){
    this.setData({
      region:e.detail.value
    })
    this.getWeater();
  },

结果如下:

在这里插入图片描述

6.进入和风天气官网->控制台->应用管理->新建应用,完成后复制key,保存起来

结果如下:
在这里插入图片描述

7.下载天气图片,并解压至images

注:实验中需要的天气图片、utils.js 下载地址为:https://gaopursuit.oss-cnbeijing.aliyuncs.com/2022/demo2_file.zip

8.获取常规天气数据:和风天气->文档->开发文档->实时天气->实时天气 for API,获取URL

以北京市为例的URL:

https://devapi.qweather.com/v7/weather/now?location=101010100&key=657a0142f0f04062a57f1d515f05bae0

9.登录微信公众平台->开发管理->服务器域名,添加 https://devapi.qweather.com和https://geoapi.qweather.com为request合法域名

结果如下:

在这里插入图片描述

10.在index.wxml文件中将天气信息改为变量,并在index.js 文件中添加 getWeather 函数,获取任意地区的天气信息

index.wxml改后代码如下:

<view class='container'>
<!-- 区域1:地区选择器 -->
<picker mode='region' bindchange='changeRegion'>
  <view style='font-size:50rpx'>{{region}}</view>
</picker>
<!-- 区域2:文本区域 -->
<text>{{now.temp}}℃{{now.txt}}</text>
<!-- 区域3:图片区域 -->
<image src="/images/{{now.icon}}.svg"></image>
<!-- 区域4:多行天气信息 -->
<view class='detail'>
  <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.js添加完后 data getWeather和 changeRegion 函数代码如下:

data: {
    region:['北京市','北京市','东城区'],
    now:{
      temp:0,
      icon:1,
      cond_txt:'未知',
      cond_code:'999',
      humidity:0,
      pressure:0,
      vis:0,
      windDir:0,
      windSpeed:0,
      windScale:0
    }
  },
  changeRegion:function(e){
    this.setData({
      region:e.detail.value
    })
    this.getWeater();
  },
getWeater: function(){
  var that=this;//this不可以直接在wxAPI中使用
  wx.request({
    url: 'https://geoapi.qweather.com/v2/city/lookup',
    data:{
      location:that.data.region[1],
      key:'657a0142f0f04062a57f1d515f05bae0'
    },
    success:function(res){
      console.log(res.data)
      that.setData({
        Place_ID:res.data.location[0].id
      })
      wx.request({
        url:'https://devapi.qweather.com/v7/weather/now?',
        data:{
          location:that.data.Place_ID,
          key:'657a0142f0f04062a57f1d515f05bae0'
        },
        success:function(res){
          console.log(res.data.now)
          that.setData({
            now:res.data.now
          })
        }
      })
    }
  })
},

结果如下:

在这里插入图片描述

三、程序运行结果

切换城市前:
在这里插入图片描述

切换城市后:

在这里插入图片描述

四、问题总结与体会

1.描述实验过程中所遇到的问题,以及是如何解决的

和风天气API:

获取城市 id:https://geoapi.qweather.com/v2/city/lookup?

获取城市天气:https://devapi.qweather.com/v7/weather/now?

在利用 wx.request 的 API 和风天气的两个 API获取实况天气数据时,一直出错,经过在网上查找发现, 通过第一个 API 获取当前城市的 id,获取 id 成功后再将 id 和 key 作为参数通过第 二个 API 上传到和风天气服务器获取当前 id 城市的天气状况。

参考文章如下:

2023暑假小程序开发 实验2:天气查询小程序_微信小程序是如何获取天气的?-CSDN博客

2.收获和体会

学会了制作天气查询小程序的基础知识,虽然花费了很长时间,但是最终做出来了,觉得很有意义。

取天气的?-CSDN博客](https://blog.csdn.net/zhangyihuai123/article/details/132453188?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-132453188-blog-124496509.235v43pc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.1&utm_relevant_index=3)

2.收获和体会

学会了制作天气查询小程序的基础知识,虽然花费了很长时间,但是最终做出来了,觉得很有意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值