微信小程序+和风天气完成天气预报
《冷暖预知》天气小程序
学无止境,以玩儿玩儿的心态去学习!
前一天晚上写的,写的不太好,第二天马上修改了,如有差错,请多指教。
花半天时间完成简单的小程序应用。适合小程序初学者。
步骤:
- 申请小程序帐号: 小程序注册入口, 具体操作按照官网步骤执行,相信你会看的很明白的(-
- 安装微信开发者工具,打开工具填写信息:①项目目录为自己要开发小程序的位置②AppId在微信管理后台的设置-开发设置中③项目名称自己起,填写完成点击完成;
- 看到默认的初始小程序Hello Horld是不是很兴奋,以上步骤不是我们今天研究的重点,下面进行我们的关键:
- 在index.wxml中写我们的结构,index.wxss中写css样式,在index.js中写我们的逻辑内容。前提是要有css3和javascript的基础哦!!!
- 在index.js中定义两个方法:getLocation()获取用户的地理位置,getWeather()获取天气的方法;
- 和风天气提供免费天气接口(无偿打广告,哈哈~~),免费版只能获取3天的天气情况,开发文档
废话不多说,直接上代码~~~
代码
1.页面结构 index.wxml
部分
<!--index.wxml-->
<view class="container">
<view class="weather yesterday">
<view>
<view class='date'>今天</view>
<view class='location'>{{basic.location}}/{{basic.parent_city}}</view>
<view class='tmp'>{{today.tmp_min}}℃~{{today.tmp_max}}℃</view>
<view class='cond_txt'>{{today.cond_txt_d}}</view>
</view>
<view>
<view class='weather_icon'>
<image src='{{todyIcon}}'></image>
</view>
<view class='lastUpdateDate'>最后更新:{{update}}</view>
</view>
</view>
<view class="weather today">
<view>
<text>明天</text>
<view class='location'>{{basic.location}}/{{basic.parent_city}}</view>
<view class='tmp'>{{tomorrow.tmp_min}}℃~{{tomorrow.tmp_max}}℃</view>
<view class='cond_txt'>{{tomorrow.cond_txt_d}}</view>
</view>
<view>
<view class='weather_icon'>
<image src='{{tomorrowIcon}}'></image>
</view>
<view class='lastUpdateDate'>最后更新:{{update}}</view>
</view>
</view>
<view class="weather tomorrow">
<view>
<text>后天</text>
<view class='location'>{{basic.location}}/{{basic.parent_city}}</view>
<view class='tmp'>{{afterTomor.tmp_min}}℃~{{afterTomor.tmp_max}}℃</view>
<view class='cond_txt'>{{afterTomor.cond_txt_d}}</view>
</view>
<view>
<view class='weather_icon'>
<image src='{{afterTomorIcon}}'></image>
</view>
<view class='lastUpdateDate'>最后更新:{{update}}</view>
</view>
</view>
</view>
2.页面样式index.wxss
部分
/**index.wxss**/
.container {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 10px 15px;
box-sizing: border-box;
}
.weather{
height: 110px;
width: 100%;
margin-bottom: 10px;
border-radius: 5px;
color: #FFF;
padding: 5PX 15px;
display: flex;
font-size: 14px;
box-sizing: border-box;
}
.weather>view{
flex: 1;
}
.weather>view>view{
margin: 5px 0;
}
.yesterday{
background-color: #30BCAF;
}
.today{
background-color: #78A4be;
}
.tomorrow{
background-color: #FCB654;
}
.location,.cond_txt{
font-size: 14px;
}
.date,.tmp{
font-weight: bold;
}
.weather_icon{
text-align: center;
height: 65px;
}
.weather_icon image{
width: 75px;
height: 100%;
}
.lastUpdateDate{
font-size: 10px;
text-align: center;
}
3.页面行为index.js
部分
//index.js
//获取应用实例
const app = getApp()
Page({
data: {
update: '',
basic:{},
today:{},
tomorrow:{},
afterTomor:{},
todyIcon:'../../imgs/weather/999.png',
tomorrowIcon:'../../imgs/weather/999.png',
afterTomorIcon:'../../imgs/weather/999.png'
},
onShow: function () {
this.getLocation();
},
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
},
getLocation:function(){
var that = this;
wx.getLocation({
type: 'wgs84',
success: function (res) {
var latitude = res.latitude
var longitude = res.longitude
that.getWeatherInfo(latitude, longitude);
}
})
},
getWeatherInfo: function (latitude, longitude){
var _this = this;
var key = '';//你自己的key
//需要在微信公众号的设置-开发设置中配置服务器域名
var url = 'https://free-api.heweather.com/s6/weather?key='+key+'&location=' + longitude + ',' + latitude;
wx.request({
url: url,
data: {},
method: 'GET',
success: function (res) {
var daily_forecast_today = res.data.HeWeather6[0].daily_forecast[0];//今天预报
var daily_forecast_tomorrow = res.data.HeWeather6[0].daily_forecast[1];//明天天预报
var daily_forecast_afterTomor = res.data.HeWeather6[0].daily_forecast[2];//后天预报
var basic = res.data.HeWeather6[0].basic;
var update = res.data.HeWeather6[0].update.loc;//更新时间
_this.setData({
update:update,
basic:basic,
today: daily_forecast_today,
tomorrow:daily_forecast_tomorrow,
afterTomor: daily_forecast_afterTomor,
todyIcon: '../../imgs/weather/' + daily_forecast_today.cond_code_d+'.png', //在和风天气中下载天气的icon图标,根据cond_code_d显示相应的图标
tomorrowIcon: '../../imgs/weather/' + daily_forecast_tomorrow.cond_code_d+'.png',
afterTomorIcon: '../../imgs/weather/' + daily_forecast_afterTomor.cond_code_d+'.png'
});
}
})
}
})
效果
大功搞成,这样就有了自己的天气预报了,天气变冷,大家注意身体哦,身体是革命的本钱!!!
扫码查看小程序
美食垂类小程序
微信小程序+和风天气完成天气预报的更多相关文章
- 微信小程序项目实战之天气预报
概述 微信小程序项目实战之天气预报 详细 代码下载:http://www.demodashi.com/demo/10634.html 一.准备工作 1.注册微信小程序 2.注册和风天气账号 3.注册百 ...
- 微信小程序踩坑集合
1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...
- 近期热门微信小程序demo源码下载汇总
近期微信小程序demo源码下载汇总,乃小程序学习分析必备素材!点击标题即可下载: 即速应用首发!原创!电商商场Demo 优质微信小程序推荐 -秀人美女图 图片下载.滑动翻页 微信小程序 - 新词 GE ...
- 鸿蒙的远程交互组件应用及微信小程序的远程交互组件应用
注:鸿蒙的远程交互组件应用相对复杂 ,访问网络时,首先要配置网络权限,华为官方文档有问题,在此引用我老师配置的模板,见附件 过程:1.导入鸿蒙的网络请求模块fetch 2.发起对服务器的请求(在这过程 ...
- 微信小程序学习指南
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- 微信小程序实战:天气预报
接触微信小程序也有一段时间了,以天气预报练一下手. 主要实现了以下功能: (1) 首页图标式菜单,便于以后扩展功能 (2)首页顶部滚动消息 (3)页面右上角三点菜单转发功能,便于小程序的传播 (4)天 ...
- 【微信小程序】——实战开发之和风(含demo)
微信小程序之和风 序 凑了一把微信小程序的热闹!12月,小程序正式发布,很火,但随之而来的是各种冷水,唱衰之调随处可见.但作为一个小前端,岂能有新技术却弃之不顾之理,更何况是微信出品的?抱着学习和研究 ...
- 两天撸一个天气应用微信小程序
更新说明: I.气象数据由百度地图开放平台修改为了和风天气,需要注册账号获取 key: II.d0e51c8 版本之后为小程序云开发版本,若未开通云开发功能,为不影响小程序正常运行,可以将版本号回退到 ...
- 微信小程序开发实战-天气小程序
园龄6年8个月了,还一篇文章都没写过,惭愧! 最近周末做了个天气预报小程序,在这里整理一下开发过程和注意点,给对小程序开发感兴趣的伙伴们提供点参考. 废话不多说,先上图最终效果: 下面进入正文: 第一 ...
随机推荐
- QMAKESPEC环境变量详解
相关知识 要讲解QMAKESPEC环境变量的知识,先要了解如下知识 qmake .pro项目文件 makefile文件 1.qmake qmake是用来为不同的平台的开发项目创建Makefile的Tr ...
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
在上文中,我介绍了事件驱动型架构的一种简单的实现,并演示了一个完整的事件派发.订阅和处理的流程.这种实现太简单了,百十行代码就展示了一个基本工作原理.然而,要将这样的解决方案运用到实际生产环境,还有很 ...
- poi 读取word文档
1.导入jar包 官网下载地址: https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.zip 最开始 ...
- 【最大流ISAP】洛谷P3376模板题
题目描述 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. 输入输出格式 输入格式: 第一行包含四个正整数N.M.S.T,分别表示点的个数.有向边的个数.源点序号.汇点序号. 接下来M行每行 ...
- K:树与二叉树
相关介绍: 树(英语:tree)是一种抽象数据类型(ADT)或是作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点组成的一个具有层次关系的集合.把它 ...
- iOS学习——UIAlertController详解
在开发中,弹出提示框是必不可少的.这两天项目中统一对已经被iOS API废弃的UIAlertView和UIActionSheet进行替换,我们知道,UIAlertView和UIActionSheet都 ...
- Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如 ...
- 错误:'dict' object is not callable
在晚上学习别人的代码,偶然爆出错误:'dict' object is not callable 找了半天没发现错误.后来还想上文已经有变量名为dict. 因此dict在下面程序中被认为是一个变量不是内 ...
- 名片管理系统v1.1(main)
# version: 1.1# author: Mark import cords_tools while True: # 显示界面 cords_tools.show_cords() cords ...
- 【Java】静态代码块使用
一.java静态代码块与静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调 ...