微信小程序项目实战之天气预报
概述
微信小程序项目实战之天气预报
详细
一、准备工作
1、注册微信小程序
2、注册和风天气账号
3、注册百度地图开放平台(小程序应用)
4、在小程序设置中设置request合法域名
二、程序实现
项目代码截图:
具体实现如下:
1、前端页面的实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | <!--index.wxml--> < image src="../../assets/day.jpg" class="bg"></ image > < view class="container"> < view class="nowWeather"> < view class="city w">{{city}} {{district}}</ view > < view class="road w">{{street}}</ view > < view class="temp w b">{{tmp}}°</ view > < view class="weather w">{{txt}} | 空气 {{qlty}}</ view > </ view > < view class="weahterDetail"> < view class=""> < view class="w center">{{dir}}</ view > < view wx:if="{{sc == '微风'}}" class="w b center f50">微风</ view > < view wx:else class="w b center f50">{{sc}}级</ view > </ view > < view class="l"></ view > < view class=""> < view class="w center">相对湿度</ view > < view class="w b center f50">{{hum}}%</ view > </ view > < view class="l"></ view > < view class=""> < view class="w center">体感温度</ view > < view class="w b center f50">{{fl}}°</ view > </ view > </ view > </ view > < view wx:for="{{daily_forecast}}" wx:for-index="i" wx:for-item="item"> < view class="hor forcast"> < view class="center">{{day[i]}}</ view > < view class="hor"> < image class="img" src="../../assets/icons/{{item.cond.code_d}}.png"></ image > < view class="center">{{item.cond.txt_d}}|{{qlty}}</ view > </ view > < view class="center">{{item.tmp.min}}°/ {{item.tmp.max}}°</ view > </ view > </ view > |
2、css实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | /**index.wxss**/ /**common css**/ .w{ color : white ; } .b{ font-weight : bold ; } .l{ border : 1 rpx solid #fff ; } . center { text-align : center ; margin : auto 0 ; } .hor{ display : flex; } .f 50 { font-size : 50 rpx; } /**index css**/ .bg { width : 100% ; height : 700 rpx; } .temp{ font-size : 170 rpx; } .container { position : absolute ; left : 0 ; top : 0 ; width : 100% ; padding : 0 ; margin : 0 ; height : 700 rpx; display : block ; } .nowWeather{ padding : 60 rpx; } .weahterDetail{ width : 100% ; display : flex; flex- direction : row; justify- content : space-around; position : absolute ; bottom : 50 rpx; } .forcast{ padding : 30 rpx; margin-left : 16 rpx; margin-right : 16 rpx; border-bottom : 1 rpx solid #eee ; justify- content : space-around; } .img{ width : 60 rpx; height : 60 rpx; margin-right : 16 rpx; } |
3、js实现动态数据绑定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | //index.js //获取应用实例 var app = getApp() var day = [ "今天" , "明天" , "后天" ]; Page({ data: { day : day, }, onLoad: function () { console.log( 'onLoad' ) var that = this that.getLocation(); }, //获取经纬度方法 getLocation: function () { var that = this wx.getLocation({ type: 'wgs84' , success: function (res) { var latitude = res.latitude var longitude = res.longitude console.log( "lat:" + latitude + " lon:" + longitude); that.getCity(latitude, longitude); } }) }, //获取城市信息 getCity: function (latitude, longitude) { var that = this var url = "https://api.map.baidu.com/geocoder/v2/" ; var params = { ak: "1G50Crx5QIKWy5o4R5Q1ONFSgmFIxfIR" , output: "json" , location: latitude + "," + longitude } wx.request({ url: url, data: params, success: function (res) { var city = res.data.result.addressComponent.city; var district = res.data.result.addressComponent.district; var street = res.data.result.addressComponent.street; that.setData({ city: city, district: district, street: street, }) var descCity = city.substring( 0 , city.length - 1 ); that.getWeahter(descCity); }, fail: function (res) { }, complete: function (res) { }, }) }, //获取天气信息 getWeahter: function (city) { var that = this var url = "https://free-api.heweather.com/v5/weather" var params = { city: city, key: "894fc2a749104d679fa022c3e71afe83" } wx.request({ url: url, data: params, success: function (res) { var tmp = res.data.HeWeather5[ 0 ].now.tmp; var txt = res.data.HeWeather5[ 0 ].now.cond.txt; var code = res.data.HeWeather5[ 0 ].now.cond.code; var qlty = res.data.HeWeather5[ 0 ].aqi.city.qlty; var dir = res.data.HeWeather5[ 0 ].now.wind.dir; var sc = res.data.HeWeather5[ 0 ].now.wind.sc; var hum = res.data.HeWeather5[ 0 ].now.hum; var fl = res.data.HeWeather5[ 0 ].now.fl; var daily_forecast = res.data.HeWeather5[ 0 ].daily_forecast; that.setData({ tmp: tmp, txt: txt, code: code, qlty: qlty, dir: dir, sc: sc, hum: hum, fl: fl, daily_forecast: daily_forecast }) }, fail: function (res) { }, complete: function (res) { }, }) } }) |
三、运行效果
导入到微信web开发者工具,运行即可:
运行后,界面如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?