你以为点了「允许」网站就拿到了 GPS?Chrome 155 今天把位置权限从二元变成了三级
用户点「允许」的那一刻,网站拿到的是什么?在中国,大多数前端工程师会脱口而出:「经纬度,精确到米。」但这个答案从 Chrome 155 开始已经不对了——或者说,从来就没完整过。
Chrome 155(2026 年 9 月 23 日全面稳定)正式将 Approximate Geolocation 设为了默认行为模式。不是新增了一个开关,而是把地理位置的粒度从二元选择(精确 or 拒绝)变成了三级阶梯:精确位置、近似位置(城市级)、拒绝。这个变化在 Android 上已经灰度推了一阵,现在随着 Chrome 155 扩大覆盖,全球约 80% 的 Chrome 用户都会遇到这个新的权限对话框。
问题是:大多数 Web 应用根本不需要精确到米的坐标。
一个天气网站要的是「你在哪个城市」,一个本地新闻要的是「你在哪个区」,一个跨境电商要的是「你在哪个国家」——但过去十年,Geolocation API 只给你两个选项:要么拿 GPS 坐标,要么什么都别想拿。这种「全或无」的模型导致大量不需要精度的应用拿到了米级坐标,存在隐私风险;反过来,有些真的需要精度的场景因为用户怕隐私泄露直接点了拒绝。
Chrome 155 改变了这个底层契约。位置信息的模糊化不再需要前端写额外逻辑,浏览器自己完成了这件事。
具体来说,新的权限模型长这样:
- 精确位置:GPS + Wi-Fi + 基站三角定位,精度 5~50 米,坐标精确到小数点后 6 位
- 近似位置:只用到 IP 地址或基站粗略定位,精度通常在城市级别(几百米到几公里),坐标精度保留到后 2~3 位就够用
- 拒绝:传统行为,网站拿不到任何有效数据
对前端工程师来说,这个变化直接影响两类代码。
第一类是已经在用 Geolocation API 的应用。如果你没有明确要求高精度,getCurrentPosition 在 Chrome 155 下的行为可能会悄悄变化——返回的 coords.accuracy 会变大,latitude/longitude 精度会降低。这不是 bug,是设计行为,但在没有做好兼容的情况下可能会让依赖精确坐标的地图打点出现偏移。
第二类是需要兼容「拒绝」场景的应用。过去用户拒绝往往意味着完全拿不到位置,但现在「近似位置」也属于一种允许状态,position.coords 里仍然有值——只是精度变了。某些场景下拿到的「上海市」可能被错误地当作「拒绝」处理。
怎么应对?分三步走:
第一步:查你现在拿到的 coords.accuracy 是多少。 精度值大于 1000 米的返回值,大概率就是近似模式来了。你的代码要能区分「用户拒绝了」「用户给了近似位置」「用户给了精确位置」三种状态,否则地图打点会出现诡异偏移。
navigator.geolocation.getCurrentPosition(
(pos) => {
const acc = pos.coords.accuracy;
if (acc > 1000) {
// 近似位置,城市级,跳过地图打点或改用手动选城市
renderCitySelector(pos.coords);
} else {
// 精确位置,正常打点
renderMap(pos.coords.latitude, pos.coords.longitude);
}
},
(err) => { /* 拒绝或获取失败 */ },
{ enableHighAccuracy: false } // 明确不要高精度,减少耗电和等待
);
第二步:检查你调用 enableHighAccuracy: true 的场景是否有必要。 这个参数意味着要求 GPS,定位时间会从毫秒级变成秒级,功耗也更高。天气类、内容推荐类场景完全不需要高精度,开启后反而延长等待时间、增加用户拒绝率。
第三步:在隐私政策或权限说明里明确告诉用户「我们要什么精度」。 这是被大多数团队忽略的事。用户点「允许」前最常问的问题是「你们要我的精确位置干什么」,如果你能给一个具体场景(「显示上海市的天气预报」vs「追踪你的跑步轨迹」),拒绝率会明显下降。Chrome 这次默认推近似位置,本质上也是在教育用户:不是所有位置请求都需要 GPS 精度。
这个变化的影响不止在技术层。GDPR 和国内个人信息保护法都强调「最小化原则」——只收集业务必需的数据。精确 GPS 坐标属于敏感个人信息,城市级坐标的敏感程度则低很多。如果你的应用声明里写的是「收集您的位置信息用于内容推荐」,但实际拿了 GPS 坐标,这在合规审计时越来越难解释。Chrome 155 给了浏览器一层默认保护,而前端工程师要做的,是让自己的业务逻辑也跟上这个粒度变化。
下一步:打开 Chrome 154+(9 月 8 日 Beta 通道),用 DevTools Sensors 面板里的「Approximate location」选项测试一遍你的应用在这个权限状态下的表现。如果地图打点出现偏移,说明你的精度判断逻辑需要修了。
评论区
登录后可评论。