使用axios(AJAX)获取地理位置及天气
// 引入axios库
const axios = require('axios');
// 获取用户当前位置的经纬度
function getLocation(ip) {
const locationUrl = `http://ip-api.com/json/${ip}?lang=zh-CN`;
return axios.get(locationUrl)
.then(response => {
if (response.data.status === 'success') {
return {
lat: response.data.lat,
lon: response.data.lon
};
} else {
throw new Error('无法获取位置信息');
}
});
}
// 获取指定经纬度的天气信息
function getWeather(lat, lon) {
const weatherUrl = `https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lon}&appid=YOUR_API_KEY&units=metric`;
return axios.get(weatherUrl)
.then(response => {
return {
temp: response.data.main.temp,
description: response.data.weather[0].description
};
});
}
// 使用示例
getLocation('您的IP地址').then(location => {
console.log('位置:', location);
return getWeather(location.lat, location.lon);
}).then(weather => {
console.log('天气:', weather);
}).catch(error => {
console.error('发生错误:', error.message);
});
在这个示例中,我们首先定义了两个函数getLocation
和getWeather
,它们分别用于获取用户的当前位置和该位置的天气信息。然后,我们使用用户的IP地址调用getLocation
函数,获取经纬度,并将这个经纬度传递给getWeather
函数来获取天气信息。最后,我们使用axios
发送HTTP请求,并在Promise的链式调用中处理响应或错误。
注意:在实际使用中,你需要替换YOUR_API_KEY
为你从OpenWeatherMap获取的API密钥,并确保你有权访问这些服务。
评论已关闭