概述

微信小程序项目实战之天气预报

详细

一、准备工作

1、注册微信小程序

2、注册和风天气账号

3、注册百度地图开放平台(小程序应用)

4、在小程序设置中设置request合法域名

二、程序实现

项目代码截图:

具体实现如下:

1、前端页面的实现

  1. <!--index.wxml-->
  2. <image src="../../assets/day.jpg" class="bg"></image>
  3. <view class="container">
  4.  
  5. <view class="nowWeather">
  6. <view class="city w">{{city}} {{district}}</view>
  7. <view class="road w">{{street}}</view>
  8. <view class="temp w b">{{tmp}}°</view>
  9. <view class="weather w">{{txt}} | 空气 {{qlty}}</view>
  10. </view>
  11.  
  12. <view class="weahterDetail">
  13. <view class="">
  14. <view class="w center">{{dir}}</view>
  15. <view wx:if="{{sc == '微风'}}" class="w b center f50">微风</view>
  16. <view wx:else class="w b center f50">{{sc}}级</view>
  17. </view>
  18. <view class="l"></view>
  19. <view class="">
  20. <view class="w center">相对湿度</view>
  21. <view class="w b center f50">{{hum}}%</view>
  22. </view>
  23. <view class="l"></view>
  24. <view class="">
  25. <view class="w center">体感温度</view>
  26. <view class="w b center f50">{{fl}}°</view>
  27. </view>
  28. </view>
  29.  
  30. </view>
  31.  
  32. <view wx:for="{{daily_forecast}}" wx:for-index="i" wx:for-item="item">
  33. <view class="hor forcast">
  34. <view class="center">{{day[i]}}</view>
  35. <view class="hor">
  36. <image class="img" src="../../assets/icons/{{item.cond.code_d}}.png"></image>
  37. <view class="center">{{item.cond.txt_d}}|{{qlty}}</view>
  38. </view>
  39. <view class="center">{{item.tmp.min}}°/ {{item.tmp.max}}°</view>
  40. </view>
  41. </view>

2、css实现

  1. /**index.wxss**/
  2.  
  3. /**common css**/
  4. .w{
  5. color: white;
  6. }
  7. .b{
  8. font-weight: bold;
  9. }
  10.  
  11. .l{
  12. border: 1rpx solid #fff;
  13. }
  14.  
  15. .center{
  16. text-align: center;
  17. margin: auto 0;
  18. }
  19.  
  20. .hor{
  21. display: flex;
  22. }
  23.  
  24. .f50{
  25. font-size: 50rpx;
  26. }
  27.  
  28. /**index css**/
  29.  
  30. .bg {
  31. width: 100%;
  32. height: 700rpx;
  33. }
  34.  
  35. .temp{
  36. font-size: 170rpx;
  37. }
  38.  
  39. .container {
  40. position: absolute;
  41. left: 0;
  42. top: 0;
  43. width: 100%;
  44. padding: 0;
  45. margin: 0;
  46. height: 700rpx;
  47. display: block;
  48. }
  49.  
  50. .nowWeather{
  51. padding: 60rpx;
  52. }
  53.  
  54. .weahterDetail{
  55. width: 100%;
  56. display: flex;
  57. flex-direction: row;
  58. justify-content: space-around;
  59. position: absolute;
  60. bottom: 50rpx;
  61. }
  62.  
  63. .forcast{
  64. padding: 30rpx;
  65. margin-left: 16rpx;
  66. margin-right: 16rpx;
  67. border-bottom: 1rpx solid #eee;
  68. justify-content: space-around;
  69. }
  70.  
  71. .img{
  72. width: 60rpx;
  73. height: 60rpx;
  74. margin-right: 16rpx;
  75. }

3、js实现动态数据绑定

  1. //index.js
  2. //获取应用实例
  3. var app = getApp()
  4. var day = ["今天","明天","后天"];
  5. Page({
  6. data: {
  7. day : day,
  8. },
  9.  
  10. onLoad: function () {
  11. console.log('onLoad')
  12. var that = this
  13.  
  14. that.getLocation();
  15. },
  16.  
  17. //获取经纬度方法
  18. getLocation: function () {
  19. var that = this
  20. wx.getLocation({
  21. type: 'wgs84',
  22. success: function (res) {
  23. var latitude = res.latitude
  24. var longitude = res.longitude
  25. console.log("lat:" + latitude + " lon:" + longitude);
  26.  
  27. that.getCity(latitude, longitude);
  28. }
  29. })
  30. },
  31.  
  32. //获取城市信息
  33. getCity: function (latitude, longitude) {
  34. var that = this
  35. var url = "https://api.map.baidu.com/geocoder/v2/";
  36. var params = {
  37. ak: "1G50Crx5QIKWy5o4R5Q1ONFSgmFIxfIR",
  38. output: "json",
  39. location: latitude + "," + longitude
  40. }
  41. wx.request({
  42. url: url,
  43. data: params,
  44. success: function (res) {
  45. var city = res.data.result.addressComponent.city;
  46. var district = res.data.result.addressComponent.district;
  47. var street = res.data.result.addressComponent.street;
  48.  
  49. that.setData({
  50. city: city,
  51. district: district,
  52. street: street,
  53. })
  54.  
  55. var descCity = city.substring(0, city.length - 1);
  56. that.getWeahter(descCity);
  57. },
  58. fail: function (res) { },
  59. complete: function (res) { },
  60. })
  61. },
  62.  
  63. //获取天气信息
  64. getWeahter: function (city) {
  65. var that = this
  66. var url = "https://free-api.heweather.com/v5/weather"
  67. var params = {
  68. city: city,
  69. key: "894fc2a749104d679fa022c3e71afe83"
  70. }
  71. wx.request({
  72. url: url,
  73. data: params,
  74. success: function (res) {
  75. var tmp = res.data.HeWeather5[0].now.tmp;
  76. var txt = res.data.HeWeather5[0].now.cond.txt;
  77. var code = res.data.HeWeather5[0].now.cond.code;
  78. var qlty = res.data.HeWeather5[0].aqi.city.qlty;
  79. var dir = res.data.HeWeather5[0].now.wind.dir;
  80. var sc = res.data.HeWeather5[0].now.wind.sc;
  81. var hum = res.data.HeWeather5[0].now.hum;
  82. var fl = res.data.HeWeather5[0].now.fl;
  83. var daily_forecast = res.data.HeWeather5[0].daily_forecast;
  84. that.setData({
  85. tmp: tmp,
  86. txt: txt,
  87. code: code,
  88. qlty: qlty,
  89. dir: dir,
  90. sc: sc,
  91. hum: hum,
  92. fl: fl,
  93. daily_forecast: daily_forecast
  94. })
  95. },
  96. fail: function (res) { },
  97. complete: function (res) { },
  98. })
  99. }
  100.  
  101. })

三、运行效果

导入到微信web开发者工具,运行即可:

运行后,界面如下:

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

微信小程序项目实战之天气预报的更多相关文章

  1. 微信小程序项目实战之豆瓣天气

    概述 微信小程序项目实战之豆瓣天气 详细 代码下载:http://www.demodashi.com/demo/10943.html 一.准备工作 1.注册微信小程序 2.在小程序设置中设置reque ...

  2. 微信小程序项目实战 - 菜谱大全

    1. 项目简介 最近研究小程序云开发,上线了一个有关菜品查询的小程序.包括搜索.分享转发.收藏.查看历史记录等功能.菜谱 API 来自聚合数据.云开发为开发者提供完整的云端支持,弱化后端和运维概念,无 ...

  3. 微信小程序 项目实战(一)生命周期 配置服务器信息 splash启动页

    步骤一:小程序 生命周期 //app.js App({ onLaunch: function () { //当小程序初始化完成时,会触发onLaunch(全局只触发一次) }, onShow: fun ...

  4. 微信小程序 项目实战(二)board 首页

    1.项目结构 2.页面 (1)数据(逻辑) board.js // pages/board/board.js Page({ /** * 页面的初始数据 */ data: { imgWrap: [] } ...

  5. 微信小程序 项目实战(三)list 列表页 及 item 详情页

    1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载 ...

  6. 《微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记1)WePY开发环境的安装

    WePY的安装或更新都通过npm进行,全局安装或更新WePY命令行工具,使用以下命令: npm install wepy-cli -g 稍等片刻,成功安装后,即可创建WePY项目. 注意:如果npm安 ...

  7. 微信小程序项目开发实战:用WePY、mpvue、Taro打造高效的小程序》(笔记4)支持React.js语法的Taro框架

    Taro本身实现的情况类似于mpvue,mpvue的未来展望中也包含了支付宝小程序,现在的版本中,也可以使用不同的构建命令来构建出百度小程序的支持,如第10章所示,但是现在Taro先于mpvue实现了 ...

  8. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  9. 微信小程序开发01 --- 微信小程序项目结构介绍

    一.微信小程序简单介绍: 微信官方介绍微信小程序是一个不需要下载安装就可使用(呵呵,JS代码不用下载吗?展示的UI不用下载吗?)的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用. ...

随机推荐

  1. 算法:四种冒泡排序(Bubble Sort)实现

    背景 大学关于排序的算法,好像就学会了冒泡排序,这个算是排序界的 hello,world 了,冒泡排序的定义如下: 重复的遍历数组. /// <summary> /// 重复的遍历数组. ...

  2. java 查询oracle数据库所有表DatabaseMetaData的用法

    DatabaseMetaData的用法(转) 一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName ...

  3. jQuery元素属性attr设置多个键值或函数 删除属性removeAttr

    $("Element").attr(name) '取得第一个匹配的属性值,比如$("img").attr("src") $("El ...

  4. Java中List效率的比较

    Java Collections Framework(JCF) 是Java SE中一个基本的类集,几乎所有的项目都会用到,其中的List 则是JCF中最最常用的一个接口.围绕List 接口,有很多实现 ...

  5. 怎么上传自己的代码/项目到自己的github仓库上

    创建新的git仓库   设置新仓库   创建完成后   复制git地址   现在已经有window git客户端了(地址:https://desktop.github.com/),但还是建议用git命 ...

  6. EasyUI Pagination 分页的两种做法

    EasyUI 的 datagrid 支持服务器端分页,但是官方的资料比较少,以下总结了两种 datagrid 的服务器端分页机制,可根据情况具体使用. 一:使用 datagrid 默认机制 后台: p ...

  7. fdisk 分区格式化为ext4格式分区

    第一步:添加硬盘/新建分区(fdisk) 第二步:格式化分区(mkfs.ext4) 第三步:加载分区(mount) 1.第一步:添加硬盘/新建分区(fdisk) a.查看当前系统所有硬盘及分区情况:f ...

  8. js常用的事件对象

    事件源对象  event.srcElement.tagName  event.srcElement.type 捕获释放  event.srcElement.setCapture();   event. ...

  9. 你可能不知道的5 个强大的HTML5 API 函数

    HTML5提供了一些非常强大的JavaScript和HTML API,来帮助开发者构建精彩的桌面和移动应用程序.本文将介绍5个新型的API,希望对你的开发工作有所帮助. 1.  全屏API(Fulls ...

  10. document.execCommand("BackgroundImageCache",false,true)解决ie6下的背景图片缓存问题

    E6下的背景图片每次使用都会重新发送请求(not 本地),连一个hover效果时候同样的背景图片仅仅位置不同而已,ie6都会再次发送请求,这个令人崩溃的事情需要解决掉:对于ie来说,filter:ex ...