JavaScript地理定位需通过navigator.geolocation API实现,必须经用户显式授权,配合清晰告知用途、提供退出路径及降级方案,并遵守《个人信息保护法》等合规要求。
JavaScript 实现地理定位主要依靠浏览器提供的 navigator.geolocation API,但它默认需要用户明确授权,且涉及敏感位置信息,隐私处理不能仅靠技术实现,必须兼顾规范性、透明性和用户控制权。
调用 getCurrentPosition() 获取一次当前位置,或用 watchPosition() 持续监听。两者都接受成功回调、失败回调和配置选项:
position 对象,含 coords.latitude、coords.longitude、精度、海拔等字段error 对象,error.code 可区分是用户拒绝(1)、位置不可用(2)、超时(3)或权限被系统禁用(4){ enableHighAccuracy: false, timeout: 5000, maximumAge: 60000 } 控制精度与资源消耗地理位置属于《个人信息保护法》《GDPR》明确定义的敏感个人信息,前端不能跳过合规前提:
禁止静默调用 getCurrentPosition(),应由用户显式操作(如点击“获取附近门店”按钮)触发很多问题出在实现惯性而非技术限制:
navigator.permissions.query({ name: 'geolocation' }) 状态,区分 “granted”、“denied”、“prompt”,针对性提示(如已拒绝需引导至浏览器设置页)并非所有场景都需精确坐标:
Intl.Locale 或 navigator.language 推断常用语言和地区偏好Intl.DateTimeFormat().resolvedOptions().timeZone)辅助判断大致地理位置