Home >WeChat Applet >Mini Program Development >Code for weather forecast development in WeChat applet
This article mainly introduces the relevant information of the WeChat Mini Program Weather Forecast development example code source code. The source code is included here. Friends in need can refer to it
WeChat Mini Program Weather Forecast
Main functions of the example
Automatically locate the city
Get weather information based on the located city
Display the weather conditions for the next few days
View detailed weather information for the day
Look at the renderings first
WeChat Mini Program-Weather Home Page
WeChat Mini Program-Weather Details Page
Ideas and Coding Department Automatically locate the city
wx.getLocation: Through the API of the official documentation, you can see that wx.getLocation can obtain the current geographical location and speed, but the obtained geographical location is only Longitude and latitude, not the real city name, but we can obtain the city name and other information based on this longitude and latitude (need to use a third-party interface), and then obtain the corresponding weather information through the city name and city ID.
Add functions in the .js logic layer:
data:{ weatherApikey:'', //天气apikey,在http://apistore.baidu.com 上申请 city:'', //城市名称 areaid:'', //城市对应的id curWd:{}, //当天天气情况 indexs:{}, //当天天气详情说明 forecast:{} //未来4天的天气情况 }, onLoad:function(options){ // 生命周期函数--监听页面加载 this.setData({weatherApikey:getApp().globalData.weatherApikey}); this.loadLocation(); }, //获取当前的位置信息,即经纬度 loadLocation: function() { var page = this; wx.getLocation({ type: 'gcj02', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 success: function(res){ // success var latitude = res.latitude; var longitude = res.longitude; //获取城市 page.loadCity(latitude, longitude); } }) }, //通过经纬度获取城市 loadCity: function(latitude, longitude) { var page = this; //这个key是自己在http://apistore.baidu.com上申请的 var key = "XSWBZ-EVQ3V-UMLPA-U4TP6-6MQFZ-UUFSL"; var url = "http://apis.map.qq.com/ws/geocoder/v1/?location="+latitude+","+longitude+"&key="+key+"&get_poi=1"; wx.request({ url: url, data: {}, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT // header: {}, // 设置请求的 header success: function(res){ // success var city = res.data.result.address_component.city; city = city.replace("市", ""); //将“市”去掉,要不然取不了天气信息 page.setData({city: city}); page.loadId(city); } }) }, //通过城市名称获取城市的唯一ID loadId: function(city) { var page = this; var url = "http://apis.baidu.com/apistore/weatherservice/citylist"; wx.request({ url: url, data: { cityname: city }, header: { apikey:page.data.weatherApikey }, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT success: function(res){ // success var cityid = res.data.retData[0].area_id; page.setData({areaid: cityid}); page.loadWeather(city, cityid); } }) }, //通过城市名称和城市ID获取天气情况 loadWeather: function(city, areaId) { var page = this; var url = "http://apis.baidu.com/apistore/weatherservice/recentweathers"; wx.request({ url: url, data: { cityname:city, cityid: areaId }, header: { apikey: page.data.weatherApikey }, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT success: function(res){ // success page.setData({curWd : res.data.retData.today, indexs: res.data.retData.today.index, forecast:res.data.retData.forecast}); } }) }, //事件绑定,跳转到天气详情页面 gotoDetail: function(event) { // console.log(this.data.areaid+"==在这里跳转=="+this.data.city); wx.navigateTo({ url: '../detail/detail?city='+this.data.city+"&cityid="+this.data.areaid }) }
##Note: page.setData or this.setData are both Used to set the data value in data. From the above logic layer, we can see that here we basically process data and some event bindings, and WeChat itself has encapsulated many practical functions for us, such as: wx.navigateTo, wx.request, wx. getLocation is somewhat similar to AngularJS's two-way data binding when communicating with the view.
index.wxml parsing<view class="main-container"> <import src="../templates/today-tpl"/> <view bindtap="gotoDetail"> <template is="today-tpl" data="{{city, curWd}}"/> </view> <import src="../templates/index-tpl"/> <view class="index-content"> <block wx:for="{{indexs}}" wx:key="item" wx:for-index="idx"> <template is="index-tpl" data="{{item,idx}}"></template> </block> </view> <import src="../templates/forecast-tpl"/> <view class="forecast"> <block wx:for="{{forecast}}" wx:key="item"> <template is="forecast-tpl" data="{{item}}"/> </block> </view> </view>Explanation: Some components of WeChat are used here, such as: view: view container; block: no Nothing will be left on the page. Using this will not add additional tags when looping; template: reference template; import: import template information, which can only be referenced after importing; {{}}: reference data; wx:for: loop .
Template file
The template file is actually a wxml file<template name="today-tpl"> <view class="today"> <view class="city">{{city}}</view> <view class="date">{{curWd.date}} {{curWd.week}}</view> <view class="temp">{{curWd.curTemp}}</view> <view class="weather">{{curWd.type}} {{curWd.lowtemp}}/{{curWd.hightemp}}</view> <view class="wd">{{curWd.wd}}</view> </view> </template>Note: About the template The description can refer to the official documentation Template and Quote . The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website! Related recommendations:
WeChat applet implements skin’s night mode
Implementation of the shopping cart function in WeChat applet
Implementation of novel reading applet in WeChat applet
The above is the detailed content of Code for weather forecast development in WeChat applet. For more information, please follow other related articles on the PHP Chinese website!