1. 根據(jù)高德api獲取本地ip下的天氣信息
步驟1. 依據(jù)高德api和發(fā)送的ip地址獲取該ip所屬的地址
步驟2. 將步驟1返回的地址碼添加到高德獲取天氣的api中 查詢天氣信息
//高德獲取天氣方法
let weatherInfo = new Promise((resolve, reject) => $.get("http://restapi.amap.com/v3/ip?key=高德KEY", (result) => !!result ? resolve(result) : reject('error')))
.then(res => new Promise((resolve, reject) => $.get(`http://restapi.amap.com/v3/weather/weatherInfo?key=高德KEY=${res.adcode}`, (res) => !!res ? resolve(res) : reject('error'))))
.then(res => !!res && !!res.lives && res.lives.length > 0 && res.lives[0])
.catch(e => e);
weatherInfo.then(res => this.weatherInfo = res).catch(e => console.log(e));;
2.根據(jù)高德api獲取給定地圖范圍內(nèi)的poi
此處用到了async/await方法,并使用遞歸調(diào)用
const amapKey =高德KEY;
//poi API
const poiPolygonAPI = "http://restapi.amap.com/v3/place/polygon";
//此處的范圍自己去定,按照格式寫就好
const kgPolygon = "117.34560973,39.15703259|117.39951140,39.09652196|117.46482855,39.09343205|117.47572905,39.15935002|117.39487654,39.16999303|117.34560973,39.15703259";
/*
* 獲取高德地圖區(qū)域poi
* */
let page = 1;
let poiResult = [];
async function getPOI() {
let res = await $.get(`${poiPolygonAPI}?key=${amapKey}&polygon=${kgPolygon}&offset=20&page=${page}&extensions=all`, res => res).catch(e=>console.error(e));
poiResult.push(...res.pois);
if (+res.count > page * 20) {
page++;
if (page > 100) {
console.warn("已超過最大翻頁數(shù),請(qǐng)縮小查詢范圍,使頁數(shù)小于100");
return;
}
getPOI();//遞歸調(diào)用
} else {
console.log(poiResult);
console.log(JSON.stringify(poiResult));
return poiResult;
}
}
getPOI();//執(zhí)行
其中:高德KEY需要自己去申請(qǐng) 地址
和大家共勉,如有錯(cuò)誤的地方,望請(qǐng)指正