你以为定位只能非精即拒,今天 Chrome 155 把这件事用一行 options 彻底原生化了

做地理位置功能的产品,最怕的不是定位不准,是用户看到权限弹窗直接关掉。

问题在哪?不是精度不够,是弹窗给的选择太粗糙——要么交出 GPS 坐标精确到米,要么一刀切拒绝。两个选项都不是用户真正想要的。

Chrome 155 给了一个中间解法。

Approximate Geolocation 是什么

就是字面意思:不需要精确到街道级别的坐标,只要知道用户在哪个城市、哪个区就够了。

以前浏览器只提供一种位置粒度,现在给了两个选项:precision(精确,误差几十米)和 approximate(近似,误差约 3 平方公里)。后者只告诉网站你在哪片区域,不泄露具体街道地址。

对用户来说,这是更合理的数据最小化——网站拿到它真正需要的信息,但拿不到它不需要的。

一行代码的事

navigator.geolocation.getCurrentPosition(
  success => {
    // approximate 模式下,accuracy 通常在 1000-3000 米
    const { latitude, longitude, accuracy } = success.coords;
    console.log(`大概在 ${accuracy}m 范围内`);
  },
  err => console.error("定位失败", err),
  { accuracyMode: "approximate" }  // 就这一行
);

不需要换接口,不需要接第三方 SDK,就多传一个选项。对现有功能改动极小。

精度差多少

精确模式:通常 50 米以内,有时候到几米。适合外卖地址、导航、找附近的人。

近似模式:约 3 平方公里(≈ 1.2 平方英里)。适合天气、地区新闻、附近商家推荐、区域广告定向。

3 平方公里是什么概念?相当于以用户为中心的一个圆形区域,半径大概 1 公里。放在地图上就是一张缩放到「城市级别」能看到的范围。

谁在用近似位置

Google 的数据说,很多网站请求位置只是为了知道用户在哪座城市,根本不需要精确到门牌号。但以前没有这个选项,要么强求精确坐标,要么放弃这个功能。

近似位置出现后,这部分需求有了合理的解决方案。

天气应用不需要知道你家在哪栋楼,知道你在哪个区就够了。地区新闻想给你推本地的内容,城市级别足够。附近商家推荐,精度的意义在于「有没有这家店」,而不是「你距离这家店 87 米还是 93 米」。

怎么判断用户拒绝了什么

navigator.geolocation.getCurrentPosition(success, error => {
  if (error.code === error.PERMISSION_DENIED) {
    // 用户拒绝了精确位置授权
    // 可以尝试 fallback 到近似模式
    navigator.geolocation.getCurrentPosition(success, () => {}, {
      accuracyMode: "approximate"
    });
  }
}, { enableHighAccuracy: true });

注意:精确模式和近似模式是两个独立的权限。用户拒绝精确,不等于拒绝近似。

三个落地步骤

第一步:列清单。把你网站所有调用 getCurrentPosition 的地方标出来,问自己一句「这里真需要精确到米吗」。天气、新闻、区域推荐——这几个场景近似就够了。

第二步:加选项。新请求全部加上 { accuracyMode: "approximate" },现有功能按需渐进切换。

第三步:做降级。如果浏览器不支持 accuracyMode(目前只有 Chrome 155+),用 @supports 做功能检测:

if ("accuracyMode" in GeolocationCoordinates.prototype) {
  // Chrome 155+,可以直接用 approximate
} else {
  // 降级:fallback 到 IP 地理定位或让用户手动选城市
}

谁还没支持

目前只有 Chrome 155(2026年9月23日稳定版发布)。Firefox、Safari、其他 Chromium 浏览器还没跟进。跨浏览器一致性还需要时间,这是现实。

不过 Chrome 的市场份额在那儿摆着,先上了再说。其他浏览器跟进了再加码,没坏处。

为什么说这件事值得注意

不只是多了一个 API 选项,是一次隐私设计思路的落地。

GDPR 这几年越来越严,位置数据的收集合理性是常见审查点。网站如果每次都要精确坐标才能提供基础功能,这个「必要性」是存疑的。近似位置给了一个折中:功能可用,数据最少。

Chrome 155 的改动让这个折中变成了浏览器原生能力。

接下来会发生什么?可以预见的是更多平台会跟进这个模式,W3C 的 Geolocation 规范也在往这个方向演进。位置权限最终会变成一个多层次的体系,而不是非 0 即 1 的二选一。

在那之前,先把不需要精确坐标的场景改掉,省掉用户不必要的隐私负担,也省掉自己合规的解释成本。

评论区

0 条评论

登录后可评论。

阿柯·前端架构 10 阅读