前言
最近项目中遇到天气预报展示的功能需求,调研后最终选择接入和风天气api,功能亮点如下:
- 非商业用户 1000次/天 到 SDK 无限量访问
- 按坐标、城市名称、格点方式定位并展示对应天气信息
- 实时、三日、七日天气预报
- 灾害极端天气预警信息
- 全国空气质量信息
- 热带台风信息
- 天文气象数据(日出、日落、月相、太阳角度等)
订阅模式
有三种订阅模式:
- 免费订阅
- 标准订阅
- 高级订阅
对比如下

大家可以根据自己需求接入对应的模式即可,下面笔者接入的是免费订阅。
接入
首先我们需要注册并登录和风天气管理端(地址),然后创建项目获取到key

获取近7日天气预报
拿到key之后,调用接口就很简单了。这里举个功能使用例子,如获取近7天天气预报:
bash
https://api.qweather.com/v7/weather/7d?[请求参数]
请求参数包括必选和可选参数,参数之间使用&
进行分隔。
location
(必选) 需要查询地区的LocationID或以英文逗号分隔的经度,纬度坐标(十进制,最多支持小数点后两位),LocationID可通过城市搜索服务获取。例如location=101010100
或location=116.41,39.92
key
(必选)用户认证key,请参考如何获取你的KEY。支持数字签名方式进行认证。例如key=123456789ABC
更详细信息可以直接查阅文档-> 传送门
使用天气图标
接下来讲解下如何在小程序中引入并使用天气图标。
我们先打开下天气图标下载官网->传送门

接着点击下载,将图标文件下载到本地,解压后我们只需用到两个文件:


接着在页面中引入这两个文件:
xml
<style>
@import './static/font/qweather-icons.css';
@font-face {
font-family: 'qweather-icons';
src: url('./static/font/qweather-icons.ttf')
format('truetype');
}
.QWeather {
font-family: 'qweather-icons';
font-size: 20px;
}
</style>
接着打开qweather-icons.css文件,我们将第一部分默认引入字体代码路径去掉(上面已经引入过了)

页面中使用
arduino
<text class="QWeather"
:class="[isNight ? 'qi-' + item.iconNight : 'qi-' + item.iconDay]"
></text>
这里需要注意的是:
- 接口返回的图标字段没有qi字段,我们需要在类名中加上前缀【qi-】。
- 返回的图标分白天跟晚上,我们需要判断下当前时间是白天还是晚上,然后分别取iconDay和iconNight字段
看下效果吧

扫码体验
评论区可扫码体验哦~