首页 > 编程语言 >开发一个微信小程序(4):查询天气-获取某个城市的实时天气

开发一个微信小程序(4):查询天气-获取某个城市的实时天气

时间:2022-10-11 11:33:59浏览次数:95  
标签:微信 天气 实时 查询 weather location now data

从这一篇开始介绍如何实现一个查询天气小程序

 

准备工作:

1、申请和风天气开发者账号,并创建一个 Web API 类型的应用 (要调用和风天气 api 获取天气,关于如何使用和风天气api需要自行查阅文档,传送门:​​和风天气开发开发平台​​);

2、下载和风天气图标 (查询到天气时,前端展示对应天气图标,传送门:​​和风天气图标​​);

3、申请腾讯位置服务开发者账号(主要用于获取用户当前所在城市,传送门:​​腾讯位置服务开发指南​​)

tips:在试验前,一定要把相关接口的域名添加到小程序的request合法域名中,不然是调不通的!!

 

本篇来实现一个基础功能:在输入框中输入城市,点击查询,显示实时天气,如下

开发一个微信小程序(4):查询天气-获取某个城市的实时天气_xml

 

拆解一下步骤:

1、前端写一个输入框、一个按钮;

2、按钮绑定一个事件,当点击按钮触发查询请求,把输入框输入的参数传给后端,后端调用实时天气查询接口,返回结果;

3、前端渲染返回的数据;

 

下面是具体的步骤

1、前端定义输入框、查询按钮

打开 pages/weather/weather.wxml

定义一个输入框和一个按钮:

其中输入框绑定了一个名为 getInputValue

按钮我是用view标签表示的,没有用常规的button标签,它绑定了 queryWeather

<!--pages/weather/weather.wxml-->
<view class='search'>
<view class="search-container">
<input type="text" placeholder="请输入城市名" placeholder-class='placeho' bindinput="getInutValue" value=""/>
</view>
<view class="search-button" bindtap="queryWeather">
<!-- <view><text>点击</text></view> -->
<view><image src="../../images/operation.png"></image></view>
</view>
</view>

 

2、编写 getInputValue 方法

打开 pages/weather/weather.js

先在data中定义一些参数

/**
* 页面的初始数据
*/
data: {
key: '79ab60ad0xxxxxxxxxx7a937',
city: '',
weather_now: {},
future: {},
twenty_four: {},
indices: {},
flag: false,
latitude_value: 1,
longitude_value: 12
},

 

定义 getInputValue

//获取输入框的值
getInputValue(e) {
console.log(e);
this.setData({
city: e.detail.value //获取页面input输入框输入的值,并传给city
})
console.log(this.data.city);
},

 

3、编写 weather_now

因为「查询天气」和「查询天气指数」的接口需要传入城市的locationid,所以在这个方法中需要先后调3个接口:

先调用获取城市 locationid 的接口,再调用「获取实时天气」的接口和「获取天气指数」的接口

//调用和风天气查询now天气接口
weather_now() {
//获取locationid
wx.request({
url: 'https://geoapi.qweather.com/v2/city/lookup',
method: 'GET',
data: {
key: this.data.key,
location: this.data.city //这个就是前端输入的城市名
},
success: (res) => {
console.log(res);
// return res.data.location[0].id
this.setData({
location: res.data.location[0].id //提取返回结果中的id
})

// 获取locationid后,查询当前天气,在success中发起请求
var location_id = this.data.location;
// console.log(location_id);
wx.request({
url: 'https://devapi.qweather.com/v7/weather/now',
method: 'GET',
data: {
key: this.data.key,
location: location_id
},
success: (res) => {
console.log(res);
this.setData({
weather_now: res.data.now,
flag: true
})
},
});
// 获取locationid后,查询天气指数
wx.request({
url: 'https://devapi.qweather.com/v7/indices/1d',
method: 'GET',
data: {
key: this.data.key,
location: location_id,
type: 3
},
success: (res) => {
console.log(res);
this.setData({
indices: res.data.daily,
flag: true
})
},


});
},
})
},

编写​​queryWeather​​方法

  //发起查询请求
queryWeather() {
this.weather_now()
},

 

 4、前端渲染数据

主要是把查询到的天气和天气指数展示出来

我提前下载好了和风天气图标,把它放到项目中,如下

开发一个微信小程序(4):查询天气-获取某个城市的实时天气_输入框_02

 

因为天气查询接口的返回内容中包含天气图标代码,只需要引用即可

<!--pages/weather/weather.wxml-->
<view class='search'>
<view class="search-container">
<input type="text" placeholder="请输入城市名" placeholder-class='placeho' bindinput="getInputValue" value=""/>
</view>
<view class="search-button" bindtap="queryWeather">
<!-- <view><text>点击</text></view> -->
<view><image src="../../images/operation.png"></image></view>
</view>
</view>

<block wx:if="{{flag}}">
<view class="title"><text>实时天气</text> </view>
<view class="top-box">
<view class="weather-image">
<view class="">
<image wx:if="{{weather_now.icon}}" src="../../QWeather-Icons-1.1.1/icons/{{weather_now.icon}}.svg"></image>
</view>
<view class="weather-text">
<text class="temp" space="nbsp">{{weather_now.temp}} ℃</text>
<text class="text">{{weather_now.text}}</text>
<text class="wind">{{weather_now.windDir}}{{weather_now.windScale}}级</text>
</view>
</view>
<view class="indices">{{indices[0].text}}</view> <!-- 天气指数 -->
<view>

 这样就完成了天气查询的基本功能



标签:微信,天气,实时,查询,weather,location,now,data
From: https://blog.51cto.com/u_10698621/5745982

相关文章

  • 开发一个微信小程序(1):获取文章列表
    ​目前主要实现了3个功能:在小程序上展示个人微信公众号上的文章;在小程序上展示个人在博客园上写的文章;查询每日天气;从本篇开始,我会用几篇文章来记录一下整个小程序开发的学......
  • 微信小程序中视频的显示与隐藏
    在微信小程序中实现视频的播放与暂停需求:视频列表中只能有一个视频在播放点击视频实现播放与暂停功能加载完成显示图片,点击后变为视频播放从上次播放的位置进行播放......
  • 微信小程序
    微信小程序api内部线上:ai.saas.soofel.com外部线上:api.ai.xuequi.cn技术栈原生微信小程序项目组成master_v2分支是内部使用,master_other是外部使用;外部使用(mast......
  • 企业微信发不出去图片
      1.清理企业微信缓存  2.重启企业微信......
  • 电脑双屏时,微信截屏显示黑屏,解决方法
    鼠标右键单击微信->点击【属性】->【兼容性】->【更改高DPI设置】->勾选【替代高DPI缩放行为】确定完成之后,即可解决  ......
  • uniapp发行微信小程序
    打包为微信小程序1.申请微信小程序AppID2.在HBuilderX中顶部菜单依次点击"发行"=>"小程序-微信",输入小程序名称和appid点击发行即可在unpackage/dist/build/mp-weixin......
  • 【项目记录】6:实时时间及季度剩余时间
    由于工作需要,换季剩余时间成为需要。tkinter界面上实时显示时间(每秒),花了自己不少时间摸索,最后实现了。效果如图,代码后面给出,仅供参考。实时时间显示实现代码如下:#实......
  • 玩转树莓派[07开机后将 IP 地址信息自动推送到微信]
    title:玩转树莓派[07:开机后将IP地址信息自动推送到微信]excerpt:最烦每次更换IP,这下好了tags:[raspberry,微信,server酱,ip发送]categories:[学习,raspber......
  • 玩转树莓派[04pi-dashboard实时监控]
    title:玩转树莓派[04:pi-dashboard实时监控]excerpt:先搞一个本地树莓派监控网页tags:[raspberry,基地2.0,系统,mariadb,myadmin,mysqlmysql,nginxnginx,ph......
  • #yyds干货盘点#【愚公系列】2022年10月 微信小程序-全局配置属性之页面配置
    前言微信小程序是由一个个单页面组成,每个页面都是由固定规则的。小程序页面自身分为两个主要部分独立运行:view模块和service模块。在开发者工具中,它们独立运行于不同的......