
GAODE_KEY 需要你自己申请(永久免费,无调用次数限制),步骤超简单,1 分钟搞定:打开高德开放平台,注册 / 登录账号(用手机号即可);
点击顶部「控制台」→ 左侧「应用管理」→「我的应用」→「创建新应用」(随便填名称,比如「天气预报定位」);
应用创建后,点击「添加 Key」→ 选择「Web 端(JS API)」→ 勾选「逆地理编码」→ 提交;
生成的Key 值就是你要替换的 const GAODE_KEY = '你的高德API Key' 中的内容。
浏览器权限:页面打开后,浏览器会弹出「请求获取位置权限」,点击「允许」才能定位;
加载提示:定位过程中会显示「正在定位你的城市...」,完成后自动隐藏;
异常处理:
拒绝权限、浏览器不支持、定位超时 / 失败 → 均默认显示北京天气,并给出弹窗提示;
高德 API 解析失败 → 同样默认北京,控制台打印错误信息;
定位精度:户外 / 网络好的情况下,精度能到街道级别,室内一般是小区 / 商圈级别,足够天气预报使用;
HTTPS 要求:现代浏览器要求地理定位 API 必须在 HTTPS 环境下使用(本地打开file://格式、localhost开发环境不受限制),如果部署到服务器,需要配置 HTTPS。
getRealWeather(city) 函数,定位成功获取城市名后,直接在这个函数里对接天气 API 即可,推荐 2 个免费天气 API:高德地图天气 API:和定位用同一个 Key,无需额外申请,文档:高德天气 API;
和风天气 API:免费版支持 3 天预报,需简单注册,文档:和风天气开发平台。
getRealWeather):// 根据城市名调用高德天气API
function getRealWeather(city) {
const weatherUrl = `https://restapi.amap.com/v3/weather/weatherInfo?city=${city}&key=${GAODE_KEY}&extensions=base&output=json`;
fetch(weatherUrl)
.then(res => res.json())
.then(data => {
if (data.status === '1' && data.lives.length > 0) {
const weather = data.lives[0];
// 更新今日天气数据
document.querySelector('.today-weather .desc').innerText = `${weather.weather} ☀️`;
document.querySelector('.today-weather .temp').innerText = `${weather.temperature}℃`;
document.querySelector('.info-item:nth-child(1)').innerText = `风力:${weather.windpower}级 ${weather.winddirection}`;
document.querySelector('.info-item:nth-child(2)').innerText = `湿度:${weather.humidity}%`;
}
});
}