JavaScript 中的地理定位主要通过 navigator.geolocation API 实现,但它必须在安全上下文(HTTPS 或 localhost)中运行,且用户必须主动授权。隐私问题不是技术“开关”能解决的,而是涉及权限设计、数据最小化和透明告知。
调用前需检查浏览器支持,并用 getCurrentPosition() 获取一次位置,或用 watchPosition( 持续监听。不建议在页面加载时自动请求权限——应等用户明确操作(如点击“获取当前位置”按钮)后再触发。
)
if ("geolocation" in navigator)
getCurrentPosition(success, error, options),其中 options 可设 { enableHighAccuracy: true, timeout: 5000, maximumAge: 30000 }
error.code === 1 表示用户拒绝,2 表示位置不可用,3 表示超时浏览器只会对首次请求显示原生权限弹窗,但用户可能因无上下文而直接拒绝。应在触发定位前,用清晰文案说明“为什么需要位置”以及“会怎么用”,比如:
经纬度是敏感个人数据,不应未经脱敏就发送至服务器。常见合规做法包括:
用户可能禁用定位、关闭 GPS、处于隧道或飞行模式。不能让功能完全失效:
地理定位不是功能越多越好,而是越克制越可信。每一次位置索取,都该有明确目的、最小必要范围和可验证的处置方式。