微信小程序-天气预报

来源:互联网 发布:golang redis expire 编辑:程序博客网 时间:2024/06/05 07:46

第一次接触微信小程序,结果发现其实小程序和NodeJs或者是其它的js框架挺类似的。所以现在的话我跟着视频敲了一个天气预报小程序练手,这里的话只是使用到前台代码,没有写后台。效果图如下:


这里的话一共使用到了两个接口,一个是百度的位置接口,另外一个是天气接口。

代码如下:

index.js

//index.js//获取应用实例var app = getApp()Page({  data: {    weekday: ['周日', '周一', '周二', '周三', '周四', '周五', '周六',],    showday: ['今天','明天','']  },  //页面加载完成  onLoad:function(){    var that = this;    var date =  new Date();        date.setDate(date.getDate()+2);    this.setData({      'showday[2]':this.data.weekday[date.getDay()]    });    console.log(this.data.showday);    wx.getLocation({      type:"wgs84",      success: function(res) {        var lat = res.latitude;//纬度        var lng = res.longitude;//经度        console.log("lat:"+lat);        console.log("lng:"+lng);        that.getCity(lat,lng);//调用自己写的函数获得城市信息      },    })  },  //获得城市  getCity:function(lat,lng){    var that = this;    var url ="http://api.map.baidu.com/geocoder/v2/";    var param = {      ak:'QgDjg59KnbdsL14plwnoP5rUAGKyDYPe',      location:lat+','+lng,      output:'json'    };    wx.request({      url: url,      data:param,      success:function(res){        console.log(res);        var city = res.data.result.addressComponent.district;        var street = res.data.result.addressComponent.street;        that.setData({          city:city,          street:street        });        //调用自定义函数获取天气信息        that.getWeather(city);      }    })  },  //获取天气信息  getWeather:function(city){    var that = this;    var url = "https://free-api.heweather.com/v5/weather";    var param={      key: '3ac2953e01864ad18f0e0c16d5ab7fa4',      city:city    };    //发出请求    wx.request({      url: url,      data:param,      success:function(res){        console.log(res);        that.setData({          now: res.data.HeWeather5["0"].now,          forecast: res.data.HeWeather5["0"].daily_forecast        });      }    })  }})//key3ac2953e01864ad18f0e0c16d5ab7fa4


index.wxml


<!--index.wxml--><image class="bg" mode="aspectFill" src="../../img/day.jpg"></image><view class="wrapper">    <view class="now">      <view class="now-tmp">        <view class="city">{{city}}</view>        <view class="street">{{street}}</view>        <view class="tmp">{{now.tmp}}°</view>        <view class="type">{{now.cond.txt}} | 空气 良</view>      </view>      <view class="now-exp">        <view class="exp-item">          <view class="">{{now.wind.dir}}</view>          <view class="">{{now.wind.sc}}级</view>        </view>        <view class="item-sp"></view>        <view class="exp-item">          <view class="">相对湿度</view>          <view class="">{{now.hum}}%</view>        </view>        <view class="item-sp"></view>        <view class="exp-item">          <view class="">体感温度</view>          <view class="">{{now.fl}}°</view>        </view>      </view>    </view>    <view class="forecast">      <block wx:for="{{forecast}}" wx:for-item="fc">      <view class="cast-item">        <view class="cast-day">{{showday[index]}}</view>        <view class="cast-type">          <image class="type-img" src="../../img/icons/{{fc.cond.code_d}}.png"></image>          {{fc.cond.txt_d}} | 良        </view>        <view class="cast-tmp">          {{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:50rpx;  font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;}.now{  height:600rpx;  color:#fff;  font-size: 0.85rem;  display: flex;  flex-direction: column;}.tmp{  font-size: 4rem;}.bg{  height: 700rpx;  width:  750rpx;}.now-exp{  display: flex;  flex-direction: row;  justify-content: space-around;}.now-tmp{  flex-grow:  1;/*表示剩余的空间都分配给该元素*/}.exp-item{  font-size: 1.2rem;  text-align: center;}.item-sp{  width:5rpx;  background-color: #fff;}.forecast{  margin-top: 50rpx;}.type-img{  width:50rpx;  height:50rpx;  vertical-align: middle;}.cast-item{  display: flex;  flex-direction: row;  justify-content: space-between;  border-bottom: 1rpx solid #ccc;  padding: 40rpx 0;}

这个程序还是挺简单的,只要将页面布局出来后,只要在使用js的Page对象里面进行数据的交换就可以了。而且在Page里的data对象中的数据都可以使用{{}}的形式将里面的变量显示出来,非常好用的模板方式,和vuejs有点像。

原创粉丝点击