在你的网页中插入天气预报(附代码)
现在有很多天气网站提供了免费或收费的api,如果每日访问量不高的话可以选择免费的,下面便是使用和风天气的api制作的一个显示当前地区当前时间的天气的网页,当然如果需要天气预报等也只需要从获取的json数组里提取就是了。
上图一张:
完整代码下载及演示链接:https://codepen.io/yinyoupoet/pen/PjgWWa
界面比较简陋,重点只在于后台获取当前位置与当前天气。
获取当前经纬度代码如下:
if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(function(position){ lat = position.coords.latitude; //维度 lon = position.coords.longitude; //经度 }); }
根据经纬度获取当前天气代码如下,免费注册后会获得一个免费的key,json格式请见官网。
var para = "https://free-api.heweather.com/v5/weather?city="+lon+","+lat+"&key=53153e2fed574ce19f5c089a1aacede0"; console.log(para); $.getJSON(para,function(json){ var city= json["HeWeather5"][0]["basic"]["city"]; var cnty= json["HeWeather5"][0]["basic"]["cnty"]; var weatherNow = json["HeWeather5"][0]["now"]["cond"]["txt"]; degree=json["HeWeather5"][0]["now"]["tmp"];
最后放上完整代码:
1.html代码:
<!DOCTYPE html><html ><head> <meta charset="UTF-8"> <title>local weather</title> <link rel=\'stylesheet prefetch\' href=\'http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\'> <link rel="stylesheet" href="css/style.css"></head><body> <div class="container-fluid"> <div class="content"> <!-- <img src="http://file.digitaling.com/eImg/uimages/20150902/1441167475585128.gif"> --> <div class="city"> <img src="img/Location.png"> <div id="cityname" style="display: inline;">城市</div> </div> <div class="weather">天气</div> <div class="degree"> <div class="tmp">30</div> <div class="tmp-kind">°C</div> <div class="tmp-change"><button class="btn-tmp-change btn btn-primary">Change °C or °F</button></div> </div> <div class="wind">北风3级</div> </div> </div> <script src=\'http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js\'></script> <script src="js/index.js"></script></body></html>
css代码:
*{ margin:0; padding:0;}body{ overflow:none; background: url("https://images.unsplash.com/photo-1465311530779-5241f5a29892?dpr=1&auto=format&fit=crop&w=1500&h=1000&q=80&cs=tinysrgb&crop=") no-repeat center center fixed; background-size: cover;}/* 雷电:https://images.unsplash.com/photo-1431440869543-efaf3388c585?dpr=1&auto=format&fit=crop&w=1500&h=1000&q=80&cs=tinysrgb&crop= 雪:https://images.unsplash.com/photo-1483119624769-b1a73c256500?dpr=1&auto=format&fit=crop&w=1080&h=724&q=80&cs=tinysrgb&crop= 太阳:https://images.unsplash.com/photo-1472752112832-519166b23dfa?dpr=1&auto=format&fit=crop&w=1080&h=720&q=80&cs=tinysrgb&crop= 雨:https://images.unsplash.com/photo-1417008914239-59b898b49382?dpr=1&auto=format&fit=crop&w=1080&h=708&q=80&cs=tinysrgb&crop= */.content{ position: absolute; margin-top: 10%; margin-left: 20%; margin-right: 20%; width: 60%;}.city{ text-align: center;}.city>img{ width: 30px;}.city>div{ font-size: 28px; vertical-align: middle; color: rgb(255,102,102);}.weather{ text-align: center; color: rgb(255,102,102); font-size: 38px;}.degree{ text-align: center; color: rgb(255,102,102); font-size: 38px;}.degree div{ display: inline;}.degree .tmp-kind{ margin-left: 10px;}.degree .tmp-change{ margin-left: 30px;}.wind{ text-align: center; color: rgb(255,102,102); font-size: 38px;}
js代码:
$(document).ready(function(){ var lat,lon; var degree; //摄氏度 var tmpShow; //显示的温度,因为有摄氏与华氏度的转换 if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(function(position){ lat = position.coords.latitude; lon = position.coords.longitude; console.log(lat+" "+lon); var para = "https://free-api.heweather.com/v5/weather?city="+lon+","+lat+"&key=53153e2fed574ce19f5c089a1aacede0"; console.log(para); $.getJSON(para,function(json){ var city= json["HeWeather5"][0]["basic"]["city"]; var cnty= json["HeWeather5"][0]["basic"]["cnty"]; var weatherNow = json["HeWeather5"][0]["now"]["cond"]["txt"]; degree=json["HeWeather5"][0]["now"]["tmp"]; tmpShow = degree; var windShow = json["HeWeather5"][0]["now"]["wind"]["dir"]+" "+json["HeWeather5"][0]["now"]["wind"]["sc"]+"级"; //console.log(city); $("#cityname").html(city+","+cnty); $(\'.weather\').html(weatherNow); $(".tmp").html(tmpShow); $(".wind").html(windShow); }); }); } $(".btn-tmp-change").on("click",function(){ console.log($(".tmp").html()); if(degree == $(".tmp").html()){ $(".tmp").html(degree*1.8+32); $(".tmp-kind").html("°F"); console.log(degree); console.log($(".tmp").html()); }else{ $(".tmp").html(degree); $(".tmp-kind").html("°C"); } }); });