Geolocation API可用于获取用户位置,适用于天气、地图等场景;使用时需用户授权且页面运行在https环境下;通过getCurrentPosition()获取一次位置,watchPosition()持续追踪,并可调用clearWatch()停止监听;需处理权限拒绝、定位不可用、超时等错误情况。

现代浏览器提供的Geolocation API让开发者可以方便地获取用户的地理位置信息,适用于天气应用、地图服务、本地推荐等场景。使用前需注意:用户必须授权位置访问,且页面需在安全上下文(HTTPS)中运行。
检查浏览器是否支持Geolocation
在调用API之前,先确认当前环境是否支持:
if ("geolocation" in navigator) { // 支持 navigator.geolocation.getCurrentPosition(success, error, options); } else { console.log("当前浏览器不支持Geolocation"); }
获取当前位置信息
通过 navigator.geolocation.getCurrentPosition() 获取一次性的位置数据:
function success(position) { const lat = position.coords.latitude; const lng = position.coords.longitude; const accuracy = position.coords.accuracy; // 精度(米) console.log(`纬度: ${lat}, 经度: ${lng}, 精度: ${accuracy}米`); } function error() { console.log("无法获取位置信息"); } const options = { enableHighAccuracy: true, // 高精度模式 timeout: 10000, // 超时时间(毫秒) maximumAge: 60000 // 缓存时间(毫秒) }; navigator.geolocation.getCurrentPosition(success, error, options);
监听位置变化
若需持续追踪用户位置,可使用 watchPosition:
立即学习“Java免费学习笔记(深入)”;
const watchId = navigator.geolocation.watchPosition( (position) => { console.log("位置更新:", position.coords.latitude, position.coords.longitude); }, error, options ); // 停止监听 // navigator.geolocation.clearWatch(watchId);
处理权限与异常
用户可能拒绝授权或设备无定位能力,需合理处理各种错误类型:
function error(err) { switch(err.code) { case err.PERMISSION_DENIED: console.log("用户拒绝了位置请求"); break; case err.POSITION_UNAVAILABLE: console.log("位置信息不可用"); break; case err.TIMEOUT: console.log("获取位置超时"); break; default: console.log("未知错误"); break; } }
基本上就这些。只要注意权限、安全协议和用户体验,Geolocation API就能稳定工作。