javascript中navigator.geolocation.getcurrentposition()用于获取用户当前位置,需在https或localhost安全上下文中运行并获用户授权;成功回调返回含latitude、longitude的position对象,错误回调通过positionerror.code区分拒绝(1)、不可用(2)、超时(3);可选配置enablehighaccuracy、timeout、maximumage;watchposition()支持持续监听,clearwatch()取消;使用前须检测"geolocation" in navigator。

JavaScript 中使用 navigator.geolocation 获取用户当前地理位置,核心是调用 getCurrentPosition() 方法,但必须在安全上下文(https 或 localhost)中运行,且需用户明确授权。
基础用法:获取一次当前位置
最常用的方式是请求一次当前位置坐标(经度、纬度),并处理成功与失败情况:
- 成功回调接收一个
Position对象,其中coords.latitude和coords.longitude是关键字段 - 错误回调接收一个
PositionError对象,code属性可判断原因(如1表示用户拒绝,2表示位置不可用,3表示超时) - 推荐始终传入错误回调,避免静默失败
navigator.geolocation.getCurrentPosition(
(position) => {
const { latitude, longitude } = position.coords;
console.log(`纬度:${latitude},经度:${longitude}`);
},
(error) => {
console.error(`定位失败:`, error.message);
}
);
可选参数:控制精度和超时
第三个参数是配置对象,用于优化定位行为:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
enableHighAccuracy: true—— 尝试获取更高精度(可能更慢、更耗电,如启用 GPS) -
timeout: 5000—— 毫秒级超时,避免长时间等待 -
maximumAge: 60000—— 允许使用最多 60 秒内缓存的位置(单位毫秒)
navigator.geolocation.getCurrentPosition(
successCallback,
errorCallback,
{
enableHighAccuracy: true,
timeout: 10000,
maximumAge: 30000
}
);
监听位置变化(适合移动场景)
使用 watchPosition() 可持续监听位置更新,返回一个唯一 watchId,可用于后续停止监听:
- 每次位置变化都会触发成功回调(例如用户步行或驾车时)
- 调用
navigator.geolocation.clearWatch(watchId)可取消监听 - 注意及时清理,避免内存泄漏或后台持续耗电
const watchId = navigator.geolocation.watchPosition(
(position) => {
console.log('位置已更新:', position.coords);
},
(error) => {
console.error('监听出错:', error.message);
}
);
<p>// 后续某处取消监听
// navigator.geolocation.clearWatch(watchId);</p>
兼容性与前置检查
不是所有环境都支持地理定位,使用前应做基本检测:
- 检查
navigator.geolocation是否存在(旧版 IE 不支持) - 确保页面运行在
https或localhost下,否则现代浏览器会直接拒绝 - 移动端需注意部分 WebView(如微信内置浏览器)可能禁用或限制该 API
if ("geolocation" in navigator) {
navigator.geolocation.getCurrentPosition(/* ... */);
} else {
console.warn("当前浏览器不支持地理位置");
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










