Geolocation API 可获取经纬度、水平精度半径、海拔及垂直精度、方向与速度;精度取决于设备能力、环境遮挡、用户权限和浏览器策略,开发者可通过 enableHighAccuracy 选项和 accuracy 值校验提升可靠性。
JavaScript 通过 Geolocation API 获取用户地理位置,但它的精度**不由 JavaScript 控制,也不由浏览器保证**,而是取决于设备能力、环境条件和用户授权设置。API 本身只是一个接口,真实精度来自底层系统(如 GPS、Wi-Fi 定位、IP 地址估算等)。
调用 navigator.geolocation.getCurrentPosition() 后,成功回调中可获得:
accuracy: 12 表示真实位置有 95% 概率落在该坐标 12 米范围内实际精度差异极大,常见情况如下:
开发者无法强制提高硬件精度,但可通过合理调用方式增强结果可用性:
enableHighAccuracy: true 选项(例如:{ enableHighAccuracy: true, timeout: 10000, maximumAge: 60000 }),向系统请求更高精度——但这不保证结果更好,只是“尽力而为”,且可能更耗电、更慢accuracy 值,若远超业务需求(如地图标注要求 ≤ 50 米,但返回 accuracy=800),应提示用户“定位不够精确”,并建议移至开阔区域或开启 GPSwatchPosition() 观察多次定位变化趋势,过滤明显漂移点(如连续三次 accuracy
Geolocation API 设计目标是满足网页级场景(如附近餐厅、天气定位、签到打卡),不是替代专业 GNSS 设备。它不提供 RTK、差分定位等增强能力,也没有厘米/毫米级精度。对精度敏感的应用(如导航引导、地理围栏触发、资产追踪),应考虑原生 App 集成更底层的定位 SDK,或搭配蓝牙信标、UWB 等辅助技术。