html5地理定位api需https/localhost安全上下文及用户授权,通过navigator.geolocation.getcurrentposition()获取经纬度,失败时根据error.code区分原因;支持enablehighaccuracy、timeout等配置;watchposition()可监听实时位置变化,需clearwatch()清理。

HTML5 地理定位 API 通过 navigator.geolocation 对象获取用户当前坐标,但必须满足两个前提:页面运行在安全上下文(即 HTTPS 或 localhost),且用户明确授权位置访问权限。
基础用法:调用 getCurrentPosition()
最常用的方式是使用 getCurrentPosition() 方法,它接受成功回调、失败回调和可选配置参数:
- 成功回调接收一个
Position对象,其中coords.latitude和coords.longitude就是经纬度 - 失败回调接收一个
PositionError对象,可检查error.code(如 1=用户拒绝、2=位置不可用、3=超时) - 第三个参数是
PositionOptions,常用enableHighAccuracy: true(尝试启用 GPS,可能更耗电)、timeout: 5000(毫秒)、maximumAge: 60000(允许返回缓存的 1 分钟内坐标)
实际代码示例
以下是一个简洁可用的写法:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
(position) => {
const lat = position.coords.latitude;
const lng = position.coords.longitude;
console.log(`纬度:${lat},经度:${lng}`);
},
(error) => {
console.error('定位失败:', error.message);
},
{ enableHighAccuracy: true, timeout: 10000, maximumAge: 30000 }
);
} else {
console.log('浏览器不支持地理定位');
}
注意用户授权与兼容性
现代浏览器都会弹出权限提示,但用户可能点“拒绝”或“仅一次”,此时后续调用会直接进入错误回调;部分旧版 iOS Safari 或禁用 JS 的环境可能不支持。建议:
- 先用
if (navigator.geolocation)做存在性判断 - 在 UI 上友好提示用户开启位置权限(例如按钮文案写“获取我的位置”而非直接执行)
- 失败时给出具体原因(如“请在浏览器设置中允许本页访问位置信息”),而不是只显示“定位失败”
进阶:监听位置变化与手动清理
若需持续跟踪(如导航应用),可用 watchPosition(),它返回一个唯一 watch ID:
- 每次位置更新都会触发成功回调,适合实时更新地图中心点
- 记得在不需要时调用
navigator.geolocation.clearWatch(watchId),避免后台持续耗电 -
watchPosition()的参数结构和getCurrentPosition()完全一致
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











