入门小程序之后跟着视频做了一个简易版的“天气预报”,在手机运行的话能准确定位所在城市并查询到相应的天气状况,页面就一个,功能也不复杂,主要调用了百度地图api查询所在位置和和天气api根据城市查询天气。效果图如下:

目录结构如下:

注册完百度地图api之后直接登录创建应用,如下图所示:

百度:https://www.heweather.com 之后注册登录后点击右上角的控制台获取个人认证key。再到API文档查看调用方法:

付费用户:https://api.heweather.com/v5/forecast?city=yourcity&key=yourkey

免费用户:https://free-api.heweather.com/v5/forecast?city=yourcity&key=yourkey

准备工作做好之后直接开始布局首页,可以参考下图:

个人感觉样式得多写,多尝试,还是比较“恶心”的,调样式!

app.json 文件代码如下:

{"pages":["pages/index/index"],"window":{"backgroundTextStyle":"light","navigationBarBackgroundColor": "#019CCA","navigationBarTitleText": "Weather Report","navigationBarTextStyle":"#fff"}
}

index.wxml 文件代码如下:

<!--index.wxml-->
<image class="bg" mode="aspectFill" src="../../icons/day.jpg"></image>
<view class="wrapper"><view class="curWeather"><view class="curTemperature"><view class="city">{{city}}  {{district}}</view><view class="street">{{street}}</view><view class="tmp">{{now.tmp}}°</view><view class="type">{{now.cond.txt}} | 空气 {{quality.city.qlty}}</view></view><view class="curExtern"><view class="wind"><view class="">{{now.wind.dir}}</view><view wx:if="{{now.wind.sc=='微风'}}" class="val">{{"<="}}2级</view><view wx:else class="val">{{now.wind.sc}}级</view></view><view class="line"></view><view class="relWet"><view class="">相对湿度</view><view class="val">{{now.hum}}%</view></view><view class="line"></view><view class="humanTmp"><view class="">体感温度</view><view class="val">{{now.fl}}°</view></view></view></view><view class="forecast"><block wx:for="{{forecast}}" wx:for-index="index" wx:for-item="fc"><view class="castItem"><view class="castDay">{{showday[index]}}</view><view class="castType"><image class="typeImg" src="../../icons/{{fc.cond.code_d}}.png"></image>{{fc.cond.txt_d}} | {{quality.city.qlty}}</view><view class="castTmp">{{fc.tmp.max}}° / {{fc.tmp.min}}°</view></view></block></view>
</view>

  index.wxss 文件的代码如下:

/**index.wxss**/
.wrapper{width:100%;height:100%;box-sizing: border-box;position:absolute;/*绝对定位*/top:0;left:0;padding:30rpx;font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
}.curWeather{height:650rpx;display: flex;flex-direction: column;/*纵向*/
}.bg{height:700rpx; width:750rpx;
}.curTemperature{color:#fff;font-size: 0.8em;flex-grow: 1;/*表示将剩余的空间分配给它*/
}.tmp{font-size: 5em;
}
.curExtern{display: flex;flex-direction: row;/*横向*/justify-content: space-around;color:#019CCA;
}
.val{text-align: center;font-size: 1.2em;
}
.line{border:0.9rpx solid #ff0;
}
.typeImg{width:50rpx;height:50rpx;vertical-align: middle;
}
.castItem{display: flex;flex-direction: row;justify-content: space-between;border-bottom: 1rpx solid #0ff; padding:50rpx 0;
}
.forecast{color:#019CCA;/*background: #aaa;*/margin-top:40rpx;
}

通过经纬度获取地理位置方法如下:

  微信发送请求的 API 接口代码如下所示:

wx.request({url: 'test.php', //仅为示例,并非真实的接口地址data: {  //参数x: '' ,y: ''},header: {'content-type': 'application/json'},success: function(res) { //请求成功后执行的回调函数,res为返回的数据。console.log(res.data)}
})

index.js 代码如下:

//index.js
//获取应用实例
var app = getApp()
Page({data: {weekday:['周日','周一','周二','周三','周四','周五','周六'],showday:['今天','明天','']},//当页面加载完成onLoad: function () {var that = this;var date = new Date();console.log(date.getDay());that.setData({'showday[2]': this.data.weekday[(date.getDay() + 2)%7]});console.log(this.data.showday);wx.getLocation({success: function (res) {var latitude = res.latitude;//纬度var longitude = res.longitude;//经度console.log(latitude + "----" + longitude);that.getCity(latitude, longitude);//调用自己写的函数获得城市},})},//获得城市的函数定义getCity: function (lat, lng) {var url = "https://api.map.baidu.com/geocoder/v2/";var param = {location: lat + "," + lng,output: "json",//返回的数据格式ak: "MKABLw7PZssnQPy0BmnV2e6vcUyKWZxf"//地图api的ak};var that = this;//发出请求获取数据wx.request({url: url,data: param,success: function (res) {console.log(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});//调用自定义的函数获取天气信息city = city.substring(0, city.length - 1);//截掉最后一个字"市"that.getWeather(city);}})},//获取天气信息函数getWeather: function (city) {console.log(city);//注意传递的参数需是城市名或拼音等,详情见api文档,如果给的不是城市名,则无空气质量的值。城市名要去掉"市"字。var that = this;var url = "https://free-api.heweather.com/v5/weather";var param = {key: "4a555d4d1adc451d8ceeaa73869c9519",city: city};//发出请求wx.request({url: url,data: param,header: {'content-type': 'application/json'},success: function (res) {console.log(res);that.setData({now: res.data.HeWeather5[0].now, /** 今天天气情况数组 /forecast: res.data.HeWeather5[0].daily_forecast, /** 预报天气情况数组 /quality:res.data.HeWeather5[0].aqi /** 空气质量 */});}})}
});

数组访问方式查看微信小程序开发工具控制台输出数组查看:

好了!到此为止就完成了!!

微信小程序之天气预报相关推荐

  1. 微信小程序实现天气预报功能(内置自动定位)(源码)

    文章目录 序言 样例图 和风天气API获取 微信小程序后台域名配置 页面代码 相关问题 源码 留言 序言 此小程序使用的是最新和风天气API. 样例图 和风天气API获取 在这个小程序中我使用的是和风 ...

  2. 微信小程序实现天气预报功能(附源码)

    目录 前言 效果图 天气API获取 微信小程序后台域名配置 页面代码 注意问题(必看) 留言 前言 最近在学小程序开发,刚好学到天气预报功能的制作,于是给大家分享下. 效果图 天气API获取 这里我用 ...

  3. 微信小程序实现天气预报功能(支持自动定位)(附源码)

    目录 前言 效果图 天气API获取 微信小程序后台域名配置 页面代码 注意问题(必看) 源码 留言 前言 由于和风天气API的更新,之前写的那篇文章 可能会出现版本不兼容的 情况.所以 更新了 这个 ...

  4. 微信小程序实例——天气预报开发笔记(进行中...)

    ★ 背景 [提示]:正在补充更新中- 首先,附上一张效果图. 之前就有关注过小程序的发展,感觉可以抽一点的时间来学习一下,通过官方文档以及提供的示例 Demo,发现兴趣挺高,不失为一个可以扩展自身技能 ...

  5. 微信小程序(天气预报)开发文档

    相关Demo以放到github上 ---------飞机------------https://github.com/193Eric/XCXdemo.git 小程序技术文档 一.小程序应用分析 1.  ...

  6. 微信小程序 - 简易天气预报

    预览图: 一.代码部分 1:WXML: <!--pages/weather/weather.wxml--> <view class="father_box"> ...

  7. 微信小程序显示天气预报

    1问题描述 使用小程序使用天气api显示天气. 2算法描述 首先打开微信开发者工具创建一个新的小程序项目,但是可以不选择任何模板,进入新建的小程序,先将index中的js,wxml,wxss中的原有格 ...

  8. 微信小程序 实现天气预报接入

    第一种方法: 1.后台接入第三方平台获取最近的天气预报信息 2.将数据返回给前端,此时返回信息的是最近所有的天气预报信息 例如(当前8月3号10点整 返回的会从当前8月3号10点整-8月5号10点整中 ...

  9. c语言写天气预报程序,微信小程序实现天气预报功能

    获取应用实例 var app = getApp() Page({ data: { //加载状态 loadingHidden: false,//当前温度 currentTemperature: '',/ ...

最新文章

  1. 日调度5万亿次,腾讯云微服务架构体系TSF深度解读
  2. C语言实例第4期:交换数组中最大数和最小数的位置
  3. pycharm 如何使用git链接到github实现代码提交
  4. mahout基于Hadoop的CF代码分析(转)
  5. ways to improve your presentation by your own
  6. 用 Python 将微信热文转换成Word文档 | 神级操作
  7. dataGridView 行头那一块儿空白是否可见的设置
  8. 计算机分数的简便运算,分数的简便运算和分数的解方程
  9. word中的表格空白部分整不掉,下面的表格拉不上来
  10. 客服端与服务器之间传输信息,QT实现客服端和服务器之间消息和文件交互
  11. Ubuntu安装虚拟机工具(VMware Tool)详解
  12. 建设医疗人工智能的“四步曲”
  13. Github desktop界面全白怎么办?[已解决]
  14. 网络毕业设计 ——无线网规划与设计
  15. 192.168.0.1路由器设置进入
  16. 影响英语单词拼写的6大因素
  17. python中条件语句的使用_如果(If) | Python 中的条件控制语句详解
  18. 如何打开.pdm文件(Mac OS X)
  19. 东京迪斯尼海洋乐园攻略_迪士尼乐园-软件工程师的观点
  20. 如何将动态URL静态化!

热门文章

  1. 戴尔(Dell)G3 3579(128 GB 固态硬盘+1 TB 机械硬盘)安装Ubuntu 16.04 LTS单系统(不是双系统,只装Ubuntu)
  2. vscode设置快捷键删除行
  3. 如何下载腾讯在线文档?如何将腾讯在线文档导出为本地Word文档(.docx)
  4. 年薪50w+的阿里p7专家,顶尖的技术人才,只因做到了这几点
  5. Java数据结构之用双向链表实现栈的入栈和出栈操作
  6. 9.多态(P a1=new B();)重写与重载、instanceof关键字
  7. Cocos2dx播放mp4文件(IOS和Android)
  8. 如何实现一个voip录音系统
  9. 中兴a2018拆机图片_中兴Axon天机做工怎么样 中兴Axon天机拆机图解 (全文)
  10. 前端小风车 HTML,CSS,Javascript