微信小程序天气预报

18 篇文章 7 订阅
订阅专栏

关于博客简介

本篇博客介绍的是一个经典的小天气入门项目——天气预报的制作过程,包含了详细的步骤:

  • WXML标记和WXSS样式
  • 获取经纬度信息
  • 获取位置信息
  • 获取实况天气
  • 数据绑定
  • 小程序发布

效果展示

那么话不多述,开始设计

WXML标记和WXSS样式

关于在开始编写WXML标记和WXSS样式时,我们要先给整个程序的布局做出规划,这个程序布局十分简单:

  • 整个页面分为两个部分
  • 实况天气上面部分
  • 近三天预报的表格下面部分
  • 在两个大的局部之下还有一个背景图片
    这个部分我们无需赘述,给出详细代码:
<image src="../../images/bg.png" id="background" mode="scaleToFill"></image>
<view id="container">
    <view id="display">
        <image src="../../images/{{cond_code_d}}.png" mode="scaleToFill" wx:if="{{cond_code_d.length>0}}"></image>
        <view id="now">{{tmp}}℃</view>
        <view id="temp"> {{cond_txt}}  {{tmp_min}}℃ / {{tmp_max}}℃</view>
        <view id="hum">	相对湿度 {{hum}}</view>
        <view id="city">
          {{city}}
          <image src="../../images/location.png" mode="scaleToFill"></image>
        </view>
    </view>
    <view id="form">
      <view wx:for="{{daily_forecast}}" wx:for-index="i" wx:for-item="item">
          <view class="list">
            <view class="td">{{item.date}}</view>
            <view class="td">
                <image src="../../images/{{item.cond_code_d}}.png" wx:if="{{item.cond_code_d.length>0}}" mode="scaleToFill"></image>
            </view>
            <view class="td">{{item.tmp_min}}℃/{{item.tmp_max}}℃</view>
          </view>
      </view>
    </view>
</view>

局部根据自己的想法来,各种颜色可以自行设置:

/*index.wxss**/
#background{
  width: 100%;
  height: 1800rpx;
  display: block;
}
#now{
  font-size: 100rpx;
  margin-top: 20rpx;
}
#container{
  color:		#7B68EE;
  position: absolute;
  top: 80rpx;
  text-align: center;/*居中*/
  width: 100%;
}
#container image{
  width: 200rpx;
  height:200rpx;
}
#air,#weather{
  margin: 20rpx;
}
#temp,#hum,#city{
  margin-top: 20rpx;
  text-align: center;
}
#city image{
  width: 35rpx;
  height: 35rpx;
}
#form{
  color:#B0C4DE;
  width: 100%;
  height:600rpx;
  text-align: center;
  margin-top:350rpx;
  margin-left:10rpx;
}
#form image{
  width: 120rpx;
  height: 120rpx;
  margin-top:10rpx;
}
.list{
  width: 80%;
  height: 220rpx;
  margin-left:10%;
}
.td{
  display: block;
  width:33%;
  height:160rpx;
  float: left;
  line-height: 160rpx;
}

整个布局页面就设计完毕了:
在这里插入图片描述
在这里插入图片描述

获取位置和天气信息

关于天气位置信息的获取,在这两篇博客中有详细的介绍

  • 获取位置信息: 小程序通过API获取位置信息 微信API 百度地图API

  • 获取实况天气:调用和风天气API获取天气实况

数据绑定

我们在JScript层通过API获取了地理信息以及天气实况,如何将这些数据绑定到WXML中呢?微信官方文档给出了答案:
在这里插入图片描述

绑定方法:

  • 设置 Page 的 data数据
  • 通过两对花括号来绑定JScript中的数据

Jcript:

//index.js
//获取应用实例
const app = getApp()
Page({
  onLoad: function () {
    var that=this;
    console.log("load");
    that.getLocation();
  },
  //获取坐标
  getLocation:function()
  {
    var that=this
    wx.getLocation({
      type: 'wgs84',
      success(res) {
        const latitude = res.latitude
        const longitude = res.longitude
        console.log("经纬度" + latitude + ":" + longitude);
        that.getCity(latitude, longitude);
      }
    })
  },

  //将经纬度坐标转化为实际位置
  getCity: function (latitude, longitude)
  {
    var that=this
    var url= "https://api.map.baidu.com/reverse_geocoding/v3/";
    var struct={
      location: latitude+ "," +longitude,
      ak: "amH0AbevGXZMHeGGIWgEPeVcmiVhGz9k",
        output:"json"
    }
    wx.request({
      url: url,
      data: struct,
      success: function(res) {
        console.log(JSON.stringify(res));
        var city = res.data.result.addressComponent.city;//获取城市信息
        that.setData({
          city:city,
        })
        //获取天气
        that.getWeather(city);
      },
      fail: function(res) {},
      complete: function(res) {},
    })
  },

  //获取city的天气信息
  getWeather:function(city)
  {
    var that = this
    var url ="https://free-api.heweather.net/s6/weather"
    var struct={
        location:city,
        key : "8570f6b17578432d86eabe3290e5c659"
    }
    wx.request({
      url: url,
      data:struct,
      success: function(res) {
        console.log(JSON.stringify(res));
        var cond_txt = res.data.HeWeather6[0].now.cond_txt;//天气
        var cond_code_d = res.data.HeWeather6[0].now.cond_code;
        var tmp = res.data.HeWeather6[0].now.tmp;//当前温度
        var hum = res.data.HeWeather6[0].now.hum;//空气质量
        var tmp_min = res.data.HeWeather6[0].daily_forecast[0].tmp_min;//最高温度
        var tmp_max = res.data.HeWeather6[0].daily_forecast[0].tmp_max;//最低温度
        var daily_forecast = res.data.HeWeather6[0].daily_forecast;//连续三天的天气情况数组
        that.setData({
          cond_txt: cond_txt,
          cond_code_d: cond_code_d,
          tmp: tmp,
          hum:hum,
          tmp_min: tmp_min,
          tmp_max: tmp_max,
          daily_forecast: daily_forecast
        })
      },
      fail: function(res) {},
      complete: function(res) {},
    })
  }
})

关于数据绑定的错误:

在图片加载过程中,往往会遇到这样的问题:
在这里插入图片描述
我的图片字符串为什么会是空串呢?由于这是因为初始化的时候,变量还没渲染进去导致的。
所以为了确保变量渲染完之后才初始化,我们加入这样一段代码:

wx:if="{{cond_code_d.length>0}}
//示例:
<image src="../../images/{{cond_code_d}}.png" wx:if="{{cond_code_d.length>0}}"></image>

这个时候就能确保变量渲染完之后才进行初始化了。

小程序的发布

  • 上传代码
  • 提交审核
    在这里插入图片描述
    在这里插入图片描述
    提交审核后1~7个工作日可以审核通过,通过后发布,发布后24h左右可以上线。
    在这里插入图片描述
使用微信小程序开发制作一个简单的天气预报应用
吃不胖.
05-25 461
在这个应用中,我们学习了如何创建一个新的小程序,并学习了如何使用天气API获取实时天气数据。这些文件是小程序的基本结构,您可以在这些文件中编写代码来实现您的应用。在按钮点击事件中,您可以更改页面背景的样式,并根据需要加载不同的图片。在请求成功后,我们将返回的数据保存到全局变量中,并更新页面的数据。这里,我们指定了小程序的首页为pages/index/index,并设置了窗口的背景颜色为白色,导航栏的标题为“天气预报”。您可以使用您的微信账号登录,并在小程序管理界面创建一个新的小程序。
解决http://wthrcdn.etouch.cn/weather_mini?city=接口获取天气的返回字符串是乱码
热门推荐
Sugar_tea的专栏
04-23 3万+
最近在做一个类似天气预报的demo,数据是从http://wthrcdn.etouch.cn/weather_mini?city=获取,但是解析出来的字符串是乱码,通常更换编码类型就可以了,但是并不见效。所以最后才发现问题所在,这个接口的数据传给客户端的时候把数据压缩了,所以当我们在客户端获取到数据后要给他解压缩gzip即可,问题就解决了,现在把代码贴出来。 // 获取天气预报 public
微信小程序实战之天气预报
FUCK
10-13 2万+
这个案例是仿UC中天气界面做的中间也有点出入,预留了显示当前城市名字和刷新图标的位置,自己可以写下,也可以添加搜索城市。值得注意的是100%这个设置好像已经不好使了,可以通过获取设备的高度通过数据绑定设置高度。地址:https://github.com/shuncaigao/Weather界面主要分为四部分:第一部分这里是预留的一块可以自行添加补充下<view class="newTopView">
微信小程序 - 简易天气预报
qq_56966336的博客
01-18 3498
微信小程序,简易天气预报小项目
微信小程序天气预报
Inite的博客
07-10 1万+
入门小程序之后跟着视频做了一个简易版的“天气预报”,在手机运行的话能准确定位所在城市并查询到相应的天气状况,页面就一个,功能也不复杂,主要调用了百度地图api查询所在位置和和天气api根据城市查询天气。效果图如下: 目录结构如下:  注册完百度地图api之后直接登录创建应用,如下图所示:  百度:https://www.heweather.com 之后注册登录
微信小程序天气预报实现
qq_43803639的博客
06-29 4754
微信小程序天气预报实现 一,准备工作 1.注册微信小程序 注册教程:https://kf.qq.com/faq/170109iQBJ3Q170109JbQfiu.html 二,注册腾旭位置服务 网址:https://lbs.qq.com 1,注册账号后,点击控制台->key与配额->key管理->创建新密钥 三,注册和风天气账号 获取天气情况,和风天气网址:https://dev.heweather.com 3,进入和风天气–控制台–应用管理–新建应用注册key 四,进入微信小程序
微信小程序 天气预报 (源码)
05-31
微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气预报 (源码)微信小程序 天气...
微信小程序 天气预报
02-27
获取当前城市的天气预报信息
微信小程序 天气预报开发实例代码
08-31
}},以上代码是微信小程序开发天气预报的一个基本实现过程。首先,我们在`onLoad`生命周期函数中调用`loadLocation`,获取用户当前的地理位置(经纬度)。接着,使用腾讯地图API(`loadCity`)根据经纬度反向解析...
微信小程序天气预报+聚合数据
最新发布
05-14
(1)根据天气预报接口,获取网络数据 (2)展示选择城市的天气情况,温度,风向,各种数据以及未来基本天气情况 (3)将网络获取的城市天气信息保存到数据库中,便于无网络进行数据请求 (4)对数据库中的城市天气...
微信小程序实现天气预报功能
10-18
主要为大家详细介绍了微信小程序实现天气预报功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
天气API
cfysch的博客
11-10 456
http://wthrcdn.etouch.cn/WeatherApi?citykey=101010100 通过城市id获得天气数据,xml文件数据, 当错误时会有节点 http://wthrcdn.etouch.cn/WeatherApi?city=北京 通过城市名字获得天气数据,xml文件数据
vue网络应用:天气查询
阿闷的博客
10-24 806
通过vue网络应用建立的天气查询网页 功能: 1.点击查询城市天气 2.按键输入查询天气 3.默认城市天气查询 4.查询失败返回 5.界面隐藏 技术应用: 1.html5,css3布局:采用流失布局为主,flex布局为辅。 2.vue本地应用于网络应用。 3.axios接口。 4.网络应用接口。 5.git工具部署静态网页。 技术逻辑: 1.回车查询:输入内容按下回车,通过双向绑定和enter绑定按键事件,调用接口,将输入的内容传递到服务器,接受到服务器返回的内容之后,渲染成列表界面。 2.点击查询:绑定点
国庆七天乐,写博也快乐之微信小程序天气预报+根据天气自动变换背景图实战(使用和风天气API)
Xmumu_的博客
10-01 3404
hello,大家好,这里是X大魔王,先提前祝各位国庆节快乐😽😽 这里还是继续带来微信小程序的一些内容,是我之前做项目的一个内容,这里给各位分享一下,我觉得还蛮不错的~🍊🍊🍊
免费的天气接口
xiaowu_1997的博客
12-18 4858
项目中有需要抓取当地天气的需求,在网上找了很多的接口,要么是接口请求次数有限制,要么是数据不全,要么是接口失效,总之是无法很好的提供一个稳定的接口。为此很是头疼的一段时间,然后天不绝人,最终还是在网上找到些比较好用的接口,特此记录下来,方便你我他。 1.通过城市名(北京/北京市)获取当前城市当前温度及未来一周天气预报 (Json数据) :包含台湾的主要县市 接口:http://wthrcdn.et...
天气预报api接口
雪小白
01-17 1万+
中华万年历: 请求数据方式: http://wthrcdn.etouch.cn/weather_mini?city=沈阳 通过城市名字获得天气数据,json数据 http://wthrcdn.etouch.cn/weather_mini?citykey=101070101 通过城市id获得天气数据,json数据 http://wthrcdn.etouch.cn/WeatherApi?cityk...
微信小程序天气预报项目收获
06-08
作为开发者,通过开发微信小程序天气预报项目,可以获得以下收获: 1. 掌握微信小程序开发技术:在开发微信小程序天气预报项目的过程中,需要掌握微信小程序开发框架、API接口调用、前端页面设计和逻辑编写等技术。...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 谷歌浏览器无限添加快捷方式 29857
  • 微信小程序订阅消息功能实现 29001
  • HTML+CSS制作的纯静态网页 22080
  • PageHelper使用——Spring Boot Starter 16899
  • 编程新务实验四 / 使用SpringBoot + Flutter实现一个具有登录,注册,邮箱验证,增删改查页面,社区功能,个人中心功能的APP 12298

分类专栏

  • 编程新务 1篇
  • 论文 1篇
  • 机器学习 6篇
  • =>人工智能导论 7篇
  • =>操作系统OS 2篇
  • =>编译原理 8篇
  • =>Linux 16篇
  • =>myProjects 4篇
  • =>springBoot 6篇
  • Android 1篇
  • =>mybatis 12篇
  • 边缘计算 2篇
  • =>Git 2篇
  • =>算法分析与设计H 35篇
  • =>Java后端 18篇
  • =>单片机 2篇
  • =>计算机系统 38篇
  • =>Python 25篇
  • =>微信小程序开发 18篇
  • =>Web前端开发 62篇
  • =>工具和配置 10篇
  • =>数字系统 2篇
  • =>逻辑与计算机设计基础 14篇
  • =>课程 4篇
  • =>字符串处理 5篇
  • =>愚乐 1篇
  • =>Euler路 2篇
  • top排序 1篇
  • 连通图 1篇
  • 文件流 1篇
  • 中国邮递员问题 1篇
  • 最短路 7篇
  • 最小生成树 1篇
  • 临时 1篇
  • 语言基础 6篇
  • 深度搜索DFS 7篇
  • 广度搜索BFS 7篇
  • 动态规划 2篇
  • 贪心 1篇
  • 方程解法 1篇
  • 计算几何 1篇
  • 数论 1篇
  • 转化 2篇
  • stl 2篇
  • 数据结构 4篇

最新评论

  • ubuntu终端颜色配置

    luowen228371: 太棒了,再也不是一片黑

  • 唱片旋转播放效果

    KIS2123: 有没有完整代码啊😭😭,我的运行不出来,能分享下吗,真的非常感谢,写作业借鉴一下

  • 树的最大连通分支问题

    Fire_Aspect: cout<<tree(0)<<endl;应该输出的是res才对吧

  • 微信小程序订阅消息功能实现

    I_am_Damon: 楼主写的真的非常好,比官方文档写的清晰很多

  • PageHelper使用——Spring Boot Starter

    理智.629: 哈哈 现在的我也遇到了相同的问题,颁布不兼容。会出现类型强转问题,哭死了 半天找不出来问题,最后升级上插件版本就可以 我现在使用1.4.6的可以表情包

大家在看

  • 重生之“我打数据结构,真的假的?”--3.栈和队列 346
  • Datawhale AI 夏令营——结营总结
  • 每日OJ_牛客_JZ39数组中出现次数超过一半的数字 31
  • Oracle性能优化之等待事件‘log file parallel write‘的解决方法 147
  • C++ 类和对象 构造函数(下) 725

最新文章

  • LaTeX 快速入门
  • 编程新务实验四 / 使用SpringBoot + Flutter实现一个具有登录,注册,邮箱验证,增删改查页面,社区功能,个人中心功能的APP
  • 机器学习实验五 / 神经网络
2021年13篇
2020年255篇
2019年76篇

目录

目录

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码永湖如何制作网站南澳阿里店铺托管坪山企业网站制作塘坑网站设计坂田网站优化按天收费大运建设网站双龙网站排名优化南山百度竞价包年推广观澜阿里店铺托管木棉湾百度竞价包年推广惠州企业网站建设宝安seo大鹏seo网站优化南山阿里店铺运营坂田关键词按天收费南山网站关键词优化松岗标王永湖SEO按天扣费永湖SEO按天计费木棉湾设计网站光明网站设计模板民治网站优化按天计费永湖百度关键词包年推广大浪英文网站建设广州网站建设龙岗SEO按天扣费福永企业网站制作荷坳网站优化按天扣费龙华百搜词包平湖seo优化歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化