我希望能够查找一个城市并获得天气信息,但使用OpenWeatherMap API,Geocoding不会给予天气信息。它会提供纬度和经度,因此我从Geocoder获取纬度和经度并将其插入到普通的API中,但它给了我一个错误:
{cod:'400',message:'wrong latitude'}
下面是我的代码:
const apiKey = '';
async function weather(){
coord = [];
const apiURL = await `https://api.openweathermap.org/data/2.5/weather?lat=${coord[0]}&lon=${coord[1]}&appid=${apiKey}`;
const geoURL = `http://api.openweathermap.org/geo/1.0/direct?q=London&appid=${apiKey}`;
try{
const geoData = await fetch(geoURL);
const geoResult = await geoData.json();
console.log(geoResult);
geoResult.forEach(att => {
var lat = att.lat;
var lon = att.lon;
coord.push(lat);
coord.push(lon);
})
console.log(coord);
const data = await fetch(apiURL);
const result = await data.json();
console.log(result);
}
catch(err){
console.log(err);
}
finally{
console.log('finally block');
}
}
weather();
字符串
我不明白它为什么要这样做。coord
数组中的坐标是正确的。我真的把他们给我的坐标直接输入到apiURL
。有人能给我解释一下吗?
1条答案
按热度按时间b09cbbtk1#
问题在于你在向列表中添加坐标之前创建了url。
即使你稍后更新了列表,字符串url已经被计算过了,所以它用
undefined
代替了lat和lon。就像下面的代码片段。字符串
你所要做的就是在坐标被添加到列表中之后创建URL