OpenWeatherMap API - 附加经度和纬度的麻烦

时间:2017-07-01 02:40:17

标签: javascript ajax callback openweathermap

我正在尝试根据用户通过.geolocation

访问的经度和纬度来定义搜索城市

将long和lat添加到我的网址时,我收到此错误

cod    :    "400"    message    :    "-104.9435462 is not a float"

getLocation();

//Find Location of Device
function getLocation(callback) {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(getData);
  }

}

//Get/set Variables
function getData(position) {
  var longitude = position.coords.longitude;
  var latitude = position.coords.latitude;
  var altitude = position.coords.altitude;
  var heading = position.coords.heading;
  var speed = position.coords.speed;
  var date = position.timestamp;

  getWeather(longitude, latitude);
  console.log(longitude);
  console.log(latitude);

}

//Call OpenWeatherAPI
function getWeather(x, y) {
  const apiKey = '';
  var url = 'http://api.openweathermap.org/data/2.5/forecast?lat=' + x + '&lon=' + y + '&APPID=280e605c456f0ba78a519edde1a641d3';

  $.ajax({
    url: url,
    success: function(result) {

    }
  });
}; //END getWeather()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

1 个答案:

答案 0 :(得分:0)

最新答案,但希望这可以节省其他人的时间。错误消息具有误导性。

发生此错误是因为将经度(范围为-180至180)放置在经度(范围为-90至90)中。

在代码中,像这样进行getWeather()调用:

getWeather(longitude, latitude);

但是,请注意,函数中的纬度和经度(x,y)是有序的(纬度,经度):

  function getWeather(x, y) {
  const apiKey = '';
  var url = 'http://api.openweathermap.org/data/2.5/forecast?lat=' + x + '&lon=' + y + '&APPID= removed id';
// additional code
}; 

更改通话应该可以解决问题:

getWeather(latitude, longitude);