//利用高德地图获取天气和定位 promise实现先获取定位,拿到定位后得到的城市名获取天气
let prom = new Promise( (resolve,reject)=>{
let AMap = window.AMap;
AMap.plugin('AMap.CitySearch',()=> {
var citySearch = new AMap.CitySearch()
citySearch.getLocalCity( (status, result)=> {
if (status === 'complete' && result.info === 'OK') {
// 查询成功,result即为当前所在城市信息
resolve(result.city);
this.setState({
city : result.city
})
}
})
});
//resolve(result.city);放在这儿会报result未定义的错
});
prom.then( (cityName)=>{
let AMap = window.AMap;
//加载天气查询插件
AMap.plugin('AMap.Weather',()=> {
//创建天气查询实例
var weather = new AMap.Weather();
//执行实时天气信息查询
weather.getLive(cityName, (err, data) => {
if(err===null && data.info==='OK'){
this.setState({
weather:data.weather,
temperature:data.temperature
})
}
});
});
});
}
单独获取天气的方式
//利用高德地图提供的接口获取天气信息
getWeather = (cityName)=>{
let AMap = window.AMap;
//加载天气查询插件
AMap.plugin('AMap.Weather',()=> {
//创建天气查询实例
var weather = new AMap.Weather();
//执行实时天气信息查询
//let cityName = '杭州市';
weather.getLive(cityName, (err, data) => {
console.log( data);
//return data.weather;
if(err===null && data.info==='OK'){
this.setState({
weather:data.weather,
temperature:data.temperature
})
}
});
});
}
//单独获取定位信息
getLocation (){
let AMap = window.AMap;
AMap.plugin('AMap.CitySearch',()=> {
var citySearch = new AMap.CitySearch()
citySearch.getLocalCity( (status, result)=> {
if (status === 'complete' && result.info === 'OK') {
// 查询成功,result即为当前所在城市信息
this.setState({
city : result.city
})
}
})
})}