微信小程序之天气查询小案例

这篇具有很好参考价值的文章主要介绍了微信小程序之天气查询小案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次小项目是关于微信小程序-动态查询天气(墨迹天气Api)

此次案例分为以下几个准备方面:

一.准备方面:

(1)如何发起请求?查看文档:RequestTask | 微信开放文档

(2)如何获取定位信息?查看文档:wx.getLocation(Object object) | 微信开放文档

(3)如何控制页面来实现数据实时渲染?查看文档:Page | 微信开放文档

(4)WXML语法条件参考:WXML | 微信开放文档

(5)墨迹天气api提供:https://autodev.openspeech.cn/csp/api/v2.1/weather

(6)对微信开发者工具的设置:查看下图:

 微信小程序之天气查询小案例微信小程序之天气查询小案例微信小程序之天气查询小案例微信小程序之天气查询小案例微信小程序之天气查询小案例

二.当前页面的js代码解析(从内向外解析):

定义第一个函数,向墨迹天气api发起请求,并获取天气数据

>形参:location-存放定位信息(经纬度),city-查询的城市,sFun-请求成功的回调函数

 //获取天气(含api)
 function sendtemp(location, city, sFun) {
    //测试
    console.log(`https://autodev.openspeech.cn/csp/api/v2.1/weather?${city == ""?"":'city='+city+"&"}${location.latitude == ""?"":"latitude="+location.latitude+"&"}${location.longitude == ""?"":"longitude="+location.longitude+"&"}clientType=android&openId=aiuicus&sign=android`);

    //获取墨迹天气api
    wx.request({
      url: `https://autodev.openspeech.cn/csp/api/v2.1/weather?${city == ""?"":'city='+city+"&"}${location.latitude == ""?"":"latitude="+location.latitude+"&"}${location.longitude == ""?"":"longitude="+location.longitude+"&"}clientType=android&openId=aiuicus&sign=android`,
      success: result => sFun(result),
      header: {
        'content-type': 'application/json' // 默认值
      },
      fail: (err) => {},
      complete: (res) => {},
    })
  }

 定义第二个函数来判断获取天气的方式,并且船舰location对象

>形参:city-查询的城市

作用:如果city为空串,则获取定位查询天气,如果是含有城市名称的字符串,则直接查询天气.

sFun-依然是获取墨迹天气api的成功回调函数

 //判断获取天气的方式(判断是否定位获取?)
  function getWeather(city, sFun) {
    //测试
    console.log(city);
    //创建定位对象
    var location = {
      latitude: "", //纬度
      longitude: "" //经度
    };
    if (city == "") {
      //当没有查询天气则定位获取 or 当查询城市为空时则采取定位获取
      wx.getLocation({
        type: "wgs84",
        success(res) {
          location = res;
          sendtemp(location, city, sFun);
        }
      })
    } else {
      //查询城市天气
      sendtemp(location, city, sFun);
    }
    
  }

 Page对象的设置:

(1)当页面加载时(onload),触发定位获取天气的函数,传入空串的city,以及获取天气成功时的回调函数,也就是上两个函数的sFun,sFun这里的形参result实际上就是获取天气成功之后的数据对象.

---在这里定义sFun的函数,可提高代码的复用性,遵循了高内聚低耦合,大大减少了代码量.

(2)定义表单的提交时的函数:传入带有值或空串的city,回调函数跟之前的一样,如果有特殊的要求,还可以自由改变函数里的代码

--可能有些人会疑问为什么这里不再定义一个函数,来重复使用,提高代码复用性呢?

答:如果要重新定义一个函数,那么在以上每个函数的形参中我们都要传入一个this(这里指的是page本身),用$this来接收,然后在调用回调函数时,把$this传入才可以提高我们的代码复用性,也就是说this要绕一大圈才可以在回调函数中使用,作者认为这样的方式有点奇怪就没有再次提高代码的复用性,如果读者觉得不麻烦的话,其实也可以使用这样的方式.

  Page({

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
      getWeather("", result => {
        if(result.data.code === 0){
          //code为0时,代表有查询的天气数据
          var res = result.data.data.list[0];
          this.setData({
            code: result.data.code, //用于条件判断
            list: result.data.data.list, //天气列表
            todayWeather: res, //今日天气
          })
        }
      });
    },
    /*
     表单的查询天气函数
    */
    search: function (e) {
      getWeather(e.detail.value.city, result => {
        //code为0时,代表有查询的天气数据
        if(result.data.code === 0){
          var res = result.data.data.list[0];
          this.setData({
            code: result.data.code, //用于条件判断
            list: result.data.data.list, //天气列表
            todayWeather: res, //今日天气
          })
        }
      });
    },
  })

三.这个内容就不做解析了,相信大家学习到这里已经有牢固的前端知识基础了.

(1)wxml:这里多了一些条件渲染还有表单使用的区别,大家可以查看以下两个文档了解一下就可以了

条件渲染:条件渲染 | 微信开放文档

列表渲染:列表渲染 | 微信开放文档

表单使用:form | 微信开放文档

<image src="../../images/beijing.jpeg" class="bg-image"/>
<view class="search">
  <form bindsubmit="search">
    <input type="text" name="city" placeholder="请输入城市"/>
    <button form-type="submit" type="primary" size="mini">查询天气</button>
  </form>
</view>
<view class="main">
  <view class="info" wx:if="{{code===0}}">
    <view class="temp">{{todayWeather.high}}℃</view>
    <view class="lowhigh">空气质量 {{todayWeather.airQuality}}</view>
    <view class="type">{{todayWeather.weather}}</view>
    <view class="city">{{todayWeather.province}} {{todayWeather.city}}
    </view>
    <view class="week">
      {{todayWeather.date}}
    </view>
    <view class="weather">
      {{ todayWeather.wind }}
    </view>
  </view>
</view>
<scroll-view class="list" scroll-x wx:if="{{code===0}}">
  <block wx:for="{{list}}" wx:key="index">
    <view class="item">
      <view>{{item.weather}}</view>
      <view>{{item.high}}℃/{{item.low}}℃</view>
      <view>{{item.date}}</view>
      <view>{{item.airQuality}}</view>
      <view>{{item.wind}}</view>
    </view>
  </block>
</scroll-view>

下附背景图(有水印,作者也没办法去掉.大家如果不想使用的话,可以直接删除含有背景的代码即可.)

微信小程序之天气查询小案例

(2)wxss: 

.main {
  display: flex;
  width: 100%;
  justify-content: center;
  text-align: center;
  margin-top: 20px;
}
.info view{
  margin-top: 10px;
  font-weight: 300;
}
.info .temp{
  font-weight: 400;
  font-size: 64px;
}
.info .lowhigh{
  font-size: 8px;
}
.info .type{
  font-size: 14px;
}
.info .city{
  font-weight: bold;
}
.info .week,.weather{
  font-size: 10px;
}
.search{
  display: flex;
  padding-top: 50rpx;
  justify-content: center;
}
.search form input{
  display: inline-block;
  border: 1px solid gray;
  height: 60rpx;
  margin-right: 10rpx;
  padding-left: 10rpx;
  border-radius: 10rpx;
}
.search form button{
  display: inline-block;
}

.list{
  margin-top: 100rpx;
  width: 100%;
  padding-top: 100rpx;
  border-top: 1px solid #cccccc;
  white-space: nowrap;
}

.item{
  display: inline-block;
  width: 30%;
  margin-right: 10rpx;
  text-align: center;
  font-size: 14px;
  line-height: 25px;
  font-family: "微软雅黑";
}
.bg-image{
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: -999;
}

(3)代码的演示:

初步加载时触发微信小程序之天气查询小案例

查询天气时触发微信小程序之天气查询小案例

(4)预览时有问题可看:微信小程序预览(真机调试)时请求获取不到API数据的解决方案文章来源地址https://www.toymoban.com/news/detail-505223.html

到了这里,关于微信小程序之天气查询小案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android制作天气预报软件 —— 天气查询

    天气查询功能包括信息显示和地区选择两个版块,二者均通过调用极速数据的相关接口进行实现。其中,信息显示界面作为软件首页,默认先显示系统设置的地区天气情况,用户可通过地区选择的界面进行修改信息。对于天气信息,受接口调用次数限制,系统设置每24小时更

    2024年02月12日
    浏览(37)
  • 免费的天气查询 API 接口分享

    空气质量查询:支持国内3400+个城市的整点观测,并附带空气质量监测点(全国共2335个)的整点观测数据。 天气预报查询:支持全国以及全球多个城市的天气查询,包含国内3400+个城市以及国际4万个城市的实况数据,同时也支持国内任意经纬度查询,接口会返回该经纬度最近

    2024年02月07日
    浏览(37)
  • html作业天气查询界面(html+css)

    目录 一、作业要求 二、题目分析 三、最终演示 四、代码 五、心得 利用百度主页的天气查询程序实现一个可以实时查询武汉市天气的静态页面 提示:获取天气数据的地址为(http://www.baidu.com/home/other/data/weatherInfo?city=武汉), (该网站返回一个json对象)界面要求如下图。

    2024年02月11日
    浏览(27)
  • python+pyecharts+flask+爬虫实现实时天气查询可视化

    本项目使用python语言编写,采用Flaskweb框架来实现前后端交互,利于开发,维护,前端使用Html和jQuery处理事件,发送数据等,后端采用requests库,BeautifulSoup库实现爬取中国气象局的数据,清洗转化成对应表格数据格式,再使用pyecharts绘制图形,返回给前端页面实现实时展示,

    2024年02月03日
    浏览(39)
  • .NET7使用HttpClient实现查询天气预报接口

    朋友做网站需要根据城市展示天气预报,找了一圈没有找到靠谱的接口,今天在中央气象台的官网查询某个城市找到了接口,先用postman试了一下居然可以使用,可以查询某个城市7天的天气预报等信息。但是查询编码是气象台自己的编码,在网上搜索了一下居然有这个编码。

    2023年04月14日
    浏览(42)
  • 微信小程序中,当用户已经拒绝本次授权后,如何重新向用户发起授权?

    当用户拒绝授权后,小程序无法调用相应的 API,需要让用户重新授权。可以通过以下步骤引导用户重新授权: 显示一个提示框,向用户说明需要该权限所需的原因,并提供一个打开设置页面的按钮。 点击打开设置页面按钮后,跳转到小程序的授权设置页。用户可以在此页面

    2024年02月11日
    浏览(70)
  • 微信小程序:简单实现查看天气小程序

    首先注册和风天气账号,创建一个免费版的项目,准备好api接口,查看自己的key 如果想获取某个城市天气信息就必须知道这个城市的location和key去请求 那么官方也提供了获取地址location的api,调用即可,其中location和key必填,location支持文字、以英文逗号分隔的经度,纬度坐标

    2024年02月13日
    浏览(51)
  • 微信小程序天气预报实战

    api接口用的和风天气 代码如下 // pages/weather/weather.js Page({   /**    * 页面的初始数据    */   data: {     apiKey: \\\"1f5e75b8a3f0472aaf2f618268b30b4e\\\",     City: \\\'\\\',     Country:\\\'\\\',     locationid:\\\"\\\",     latlongFlag: false   },   /**    * 生命周期函数--监听页面加载    */   onL

    2024年02月19日
    浏览(32)
  • 微信小程序 - 简易天气预报

    预览图:   1:WXML: 2:WXSS: 3:JS: 4:下载地图包: 不了解的可以通过这个链接查看,其中有关于小程序定位的内容,本章也使用到过:微信小程序获取位置信息_微信小程序获取当前位置_鸢与浅忆的博客-CSDN博客  5:app.json: 和page、window同级 该项目使用的接口为nowapi平台提

    2024年02月06日
    浏览(79)
  • 微信小程序引入和风天气图标库

    npm导入和风天气的图标库后使用没有效果,就在网上查询了下怎么解决,然后动手尝试一下。 参考文章 1. 下载图标文件(链接),解压后大致这样 2. 在transfonter网站将需要的图标字体转成Base64,在fontfonts文件下 选择上传 下载 3. 解压后把stylesheet.css复制到小程序的某个文件夹下

    2024年02月04日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包