zoukankan      html  css  js  c++  java
  • 网页中加入当前天气(附代码)

    现在有很多天气网站提供了免费或收费的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"];

    最后放上完整代码:
    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");
            }
        });
    
    });



    欢迎大家加入QQ群一起交流讨论,「吟游」程序人生——YinyouPoet

  • 相关阅读:
    Codeforces Round #371 (Div. 1)
    Making the Grade(POJ3666)
    The trip(Uva 11100)
    Codeforces Round #370 (Div. 2) E. Memory and Casinos (数学&&概率&&线段树)
    [CodeForces
    勾股数组 学习笔记
    NOIP 2015 游记
    BestCoder Round #53 (div.1)
    北大信息学夏令营 游记
    Codeforces Round #313 (Div. 1)
  • 原文地址:https://www.cnblogs.com/yinyoupoet/p/13287579.html
Copyright © 2011-2022 走看看