天气API(openweathermap)显示温度错误

时间:2016-01-29 06:19:21

标签: javascript jquery json api openweathermap

所有在这段代码中我试图给用户位置和温度在地方但不知何故温度显示方式较少摄氏度也没有更新下面是我尝试的像是4-5小时返回数据到那10摄氏度,如果温度是22(摄氏)小时,它显示像3(摄氏)工作示例在codepen http://codepen.io/cannelflow/full/RrymYo/



var x = document.getElementById("demo");
var y = document.getElementById("demo1");
window.onload = getLocation();
//window.onload=getWeather();
function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition, showError);
    } else {
        x.innerHTML = "Geolocation is not supported by this browser.";
    }
}
//Location For Display
function showPosition(position) {
    var loc = { lat: position.coords.latitude, lon: position.coords.longitude };
    getWeather(loc);
    var baseURL = "https://maps.googleapis.com/maps/api/geocode/json?latlng=";
    var fullURL = baseURL + loc.lat + "," + loc.lon;
    $.ajax({
        url: fullURL,
        success: function (display) {
            x.innerHTML = display.results[1].formatted_address;
        }
    });

}
//Location For Weather
function getWeather(loc) {
    var baseURL = "http://api.openweathermap.org/data/2.5/weather?lat=";
    var appid = "064129b86c99c35c42d531db251b99e3";
    var fullURL = baseURL + loc.lat + "&lon=" + loc.lat + "&appid=" + appid + "&units=metric";
    //http://api.openweathermap.org/data/2.5/weather?lat=21.2600668&lon=81.5989561&appid=064129b86c99c35c42d531db251b99e3&units=metric
    $.ajax({
        url: fullURL,
        success: function (display1) {
            y.innerHTML = display1.main.temp;
        }
    });
}


function showError(error) {
    switch (error.code) {
        case error.PERMISSION_DENIED:
            x.innerHTML = "User denied the request for Geolocation."
            break;
        case error.POSITION_UNAVAILABLE:
            x.innerHTML = "Location information is unavailable."
            break;
        case error.TIMEOUT:
            x.innerHTML = "The request to get user location timed out."
            break;
        case error.UNKNOWN_ERROR:
            x.innerHTML = "An unknown error occurred."
            break;
    }
}

<body>
    <section>
        <div class="container-fluid text-center">
            <br />
            <!-- <h1><button class="btn btn-danger" onclick="getLocation()">Click Me To Get Your Location!</button></h1> -->
            <h1 class="text-primary" id="demo1"></h1>
            <br />
            <h1 class="text-primary" id="demo"></h1>
        </div>
    </section>
</body>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:1)

你有一个错字:

       if (!function_exists('mysql_insert_multiple')) {

function mysql_insert_multiple($db, $table, $columns) {
    $sql = "INSERT INTO `" . $table . "` ";
    // implode keys of $array...
    $sql .= " (`" . implode("`, `", array_keys($columns[0])) . "`)";
    // implode values of $array...
    $sql .= " VALUES ";
    $tempstr = array();
    foreach ($columns as $row) {
        $tempstr[] = " ('" . implode("', '", $row) . "') ";
    }
    $sql.=implode(',', $tempstr);
    $sql.=";";
    $result = mysql_query($sql, $db) or die(mysql_error());
    return $result;
}

应该是

var fullURL = baseURL + loc.lat + "&lon=" + loc.lat + "&appid=" + appid + "&units=metric";

答案 1 :(得分:0)

查询字符串中有拼写错误。更好的选择是用户jQuery.param从对象构建查询字符串,因为它更容易阅读,因此更不容易出错。

function getWeather(loc) {
  var baseURL = "http://api.openweathermap.org/data/2.5/weather?";
  return $.ajax({
    url: baseURL + $.param({
      appid: "064129b86c99c35c42d531db251b99e3",
      lon: loc.lon,
      lat: loc.lat,
      units: "metric"
    }),
    success: function(display1) {
      y.innerHTML = display1.main.temp;
    }
  });
}

答案 2 :(得分:0)

修改它像

function getWeather(loc) {
    var baseURL = "http://api.openweathermap.org/data/2.5/weather?lat=";
    var appid = "064129b86c99c35c42d531db251b99e3";
    //var fullURL = baseURL + loc.lat + "&lon=" + loc.lat + "&appid=" + appid + "&units=metric";
    //http://api.openweathermap.org/data/2.5/forecast?lat=35&lon=139&appid=44db6a862fba0b067b1930da0d769e98&units=metric
    $.ajax({
        url: baseURL,
        type: 'get',
        dataType: 'JSONP',
        data: { lat: loc.lat, lon: loc.lon, units: 'metric', APPID: appid },
        success: function (data) {
            y.innerHTML = data['main']['temp'] + " °C";
        }
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

并且工作