当前位置: 首页 > news >正文

为什么地下停车场没有 GPS,手机依然知道你在哪?

第一次认真研究手机定位的时候,我一直有个疑问。

地下停车场明明没有 GPS 信号。

但微信、高德、小红书,
依然知道我在哪。

甚至还能持续更新位置。

后来深入看了一圈移动端定位系统,
我才发现:

现代手机定位,
早就不是“GPS 定位”那么简单了。

它本质上已经是一套:

多源实时融合系统

GPS 只是其中一部分。

而且很多时候,
GPS 甚至是最没用的那个。


一、GPS 其实有很多硬伤

很多人对定位的理解还停留在:

手机 ← GPS卫星

实际上:

GPS 在真实业务场景里,
问题非常多。


1)GPS 必须“看见天空”

GPS 本质上是:

卫星发射无线电信号,
手机接收后做三角测距。

问题是:

这个信号非常弱。

所以:

  • 室外空旷地 → 很准
  • 高楼之间 → 开始漂
  • 室内 → 基本废
  • 地下停车场 → 直接没信号

做过地图业务的人应该都见过:

用户已经进商场了, 地图上的点还在马路上。

这就是 GPS 信号丢失后的典型表现。


2)GPS 冷启动非常慢

很多人不知道:

GPS 第一次定位其实不快。

尤其:

  • 长时间没开定位
  • 飞机落地
  • 手机刚重启

场景下。

GPS 需要先下载星历数据。

这个过程:

可能要几十秒

对于用户体验来说:

完全不可接受。

想象一下:

外卖 App 打开以后:

“正在定位...”

转半分钟。

产品经理会直接疯掉。


3)GPS 很耗电

持续开 GPS:

  • 手机发热
  • 电量暴跌
  • 后台耗电异常

所以:

现代手机系统其实不会长期只依赖 GPS。


二、真正的定位系统,其实有三套信号源

现代手机定位,
本质上是:

GPS + WiFi + 基站

三套系统一起工作。

再加上传感器融合。


三、基站定位:永远在线,但精度一般

手机即使不联网,
也始终在和附近基站通信。

每个基站都有唯一标识:

MCC + MNC + LAC + Cell ID

运营商知道:

每个基站在哪。

所以:

手机只要上报:

“我附近有哪些基站”

服务端就能大概推算位置。


基站定位的特点

优点:

  • 不需要 GPS
  • 室内可用
  • 功耗极低
  • 几乎随时可用

缺点:

精度一般。

误差大概:

场景误差
农村1~5公里
普通城市100~500米
市区核心区50~100米

所以:

基站定位更像:

“先告诉系统你大概在哪”

而不是精准定位。


四、WiFi 定位,才是真正的室内核心

这个是很多人第一次知道会震惊的东西。

因为:

手机甚至不需要连接 WiFi。

只要:

扫描到附近热点

就已经足够定位。


五、WiFi 为什么能定位?

每个 WiFi 路由器都有唯一 MAC 地址:

BSSID

手机会扫描:

[ { bssid: "xx:xx:xx", rssi: -45 }, { bssid: "yy:yy:yy", rssi: -63 } ]

也就是:

  • 周围有哪些 WiFi
  • 每个信号强度多少

然后上传给服务端。


六、真正的核心:WiFi 指纹数据库

服务端背后其实有一套巨大的:

WiFi AP 数据库

里面记录:

某个 WiFi 出现在哪

于是:

系统只要发现:

“你附近出现了这些 WiFi”

就能推算位置。

而且:

精度通常比基站高很多。


七、为什么地下停车场还能定位?

因为:

地下停车场没有 GPS, 但通常有 WiFi。

尤其:

  • 商场
  • 写字楼
  • 地铁
  • 地下车库

WiFi 密度其实非常高。

所以:

即使 GPS 完全失效,

系统依然能通过:

WiFi 指纹

完成定位。

这也是为什么:

很多时候室内定位,
反而比室外更稳定。


八、这些 WiFi 数据从哪来的?

这其实是整个行业最大的壁垒之一。

因为:

定位精度最终拼的是:

数据库规模

数据一般来自:

  • 手机厂商长期采集
  • 地图服务商众包
  • 用户设备匿名回传
  • 扫街设备采集

简单理解:

当用户 GPS 很准时:

系统会顺便记录:

当前位置附近有哪些 WiFi

久而久之:

数据库越来越大。


九、还有第四套系统:传感器融合

现代手机还有一套:

IMU(惯性测量单元)

包括:

  • 加速度计
  • 陀螺仪
  • 磁力计
  • 气压计

这些东西的作用是:

位置连续性

比如:

GPS 突然断了。

系统仍然可以根据:

  • 用户移动方向
  • 步频
  • 加速度

推算:

“你大概又往前走了10米”

避免地图点位突然跳跃。


十、真正核心:融合算法

现在问题来了。

GPS、
WiFi、
基站、
IMU,

都不完美。

那系统到底该信谁?

答案是:

融合算法

工业界主流方案:

EKF(扩展卡尔曼滤波)

十一、卡尔曼滤波到底在干什么?

简单理解:

系统每时每刻都在做:

“我猜你现在在哪” + “传感器告诉我你在哪”

然后不断修正。

比如:


GPS 信号强

系统会:

提高 GPS 权重

室内 WiFi 很多

系统会:

提高 WiFi 权重

所有信号都没了

系统只能:

依赖 IMU 短时间推算

但误差会越来越大。


十二、accuracy 为什么特别重要?

很多开发者拿到经纬度:

直接就用了。

但真正重要的是:

accuracy

也就是:

当前定位误差半径

举个例子

{ lat: 39.9960, lng: 116.4812, accuracy: 15 }

代表:

系统有很高概率认为: 你在15米范围内

如果:

accuracy: 500

那说明:

系统自己都不确定你在哪。


十三、很多定位“翻车”其实是没看 accuracy

这个是非常真实的工程坑。

很多项目:

showMarker(lat, lng)

直接画点。

结果:

用户在商场里。

accuracy:

800米

地图上还在精确画 Marker。

最后用户以为:

定位错了

实际上:

是开发者根本没处理精度。


十四、开发里真正推荐的做法

如果你的业务:

只是:

  • 天气
  • 城市推荐
  • 普通地图展示

系统原生定位通常够用。

但如果涉及:

  • 外卖
  • 跑腿
  • 打卡
  • IoT
  • 室内定位
  • 轨迹

那原生能力一般不够。

因为:

你真正需要的是融合定位

而不是单纯 GPS。


十五、我们后来项目里的做法

后来项目里接了 LTS 的融合定位 SDK。

主要原因是:

它会自动融合:

  • GPS
  • WiFi
  • 基站

室内场景稳定性会比原生定位好很多。

小程序里接入也比较简单:

import LTS from 'lts-wechat-sdk'; const lts = new LTS({ apiKey: 'YOUR_API_KEY' }); const position = await lts.getLocation({ type: 'fusion' }); console.log({ lat: position.lat, lng: position.lng, accuracy: position.accuracy, source: position.source });

实际项目里:

我们更关心的反而不是:

经纬度

而是:

accuracy 是否稳定

因为:

用户感知的是:

“位置有没有乱跳”

而不是:

“理论误差是多少”

十六、一张图总结整个融合定位系统

GPS → 室外精准,但室内失效 WiFi → 室内核心,精度高 基站 → 永远在线,负责兜底 IMU → 保证位置连续性 ↓ 数据融合 EKF / 卡尔曼滤波 ↓ 当前位置 + accuracy

十七、最后一个很重要的认知

融合定位不是魔法。

它本质上是:

对多个“不完美信号”的最优融合

所以:

真正做定位系统时,

你最重要的能力不是:

“获取坐标”

而是:

理解每种信号源的能力边界

什么时候:

  • GPS 会漂
  • WiFi 会失效
  • 基站精度不够
  • IMU 开始累计误差

这些才是真正的工程核心。


如果你的项目涉及:

  • 小程序定位
  • 室内定位
  • IoT轨迹
  • 融合定位

可以试试 LTS 的定位能力。关于链接我方评论区了 有兴趣的同学可以去了解

也很想听听:

做过室内定位项目的同学,
实际踩过哪些坑。

http://www.cnnetsun.cn/news/2641315.html

相关文章:

  • Unlock-Music终极指南:5分钟掌握所有加密音乐格式解锁技巧
  • 实测一个本地知识库:自动学习电脑里的几百个文件,一键导出总结报告!
  • STM32F103C8T6+DHT11温湿度采集实战:手把手教你用HAL库和CubeMX搞定单总线通信
  • 别再只盯着AUC了!用Python手把手教你绘制ROC与PR曲线(附sklearn代码)
  • 告别刻录盘!用UltraISO软碟通给老旧电脑制作Windows 7 U盘启动盘保姆级教程
  • 如何彻底卸载微软Edge浏览器?EdgeRemover专业工具详解
  • ARM嵌入式平台Nginx移植与负载均衡实战:基于Yocto与OKMX6ULx
  • 终极英雄联盟国服换肤指南:R3nzSkin免费解锁全皮肤体验
  • 告别Steam限制!WorkshopDL让你轻松下载1000+游戏模组
  • 从点灯到通信:基于STM32F103和FreeRTOS,手把手教你实现任务间消息队列与信号量
  • 前端架构模式对比:选择适合你的架构方案
  • 如何解决MAA异常问题:5步诊断与恢复实战指南
  • 游戏鼠标微动开关更换全攻略:从工具准备到焊接实操
  • 新手别乱买!2024年穿越机遥控器选购避坑指南(从RadioMaster到FrSky)
  • 极域电子教室破解工具终极指南:3分钟解除课堂控制限制
  • 高校成绩预测实战包:联邦学习多算法PyTorch实现+Streamlit交互看板+真实/模拟双数据集
  • 别再只盯着复现了:从CVE-2021-21351看XStream 1.4.15黑名单机制的“破窗”与修复实战
  • 宇树科技IPO临近,资本盛宴背后能否在“大脑”之争中突围?
  • 临床太忙没时间读文献?我靠这4招搞定
  • Keil µVision生成Intel HEX文件的方法与原理
  • Java 程序员第 40 阶段02:从零搭建 Java 大模型完整项目,开发环境搭建与工程初始化
  • 基于TEC模块的自发热耳罩DIY:热电效应原理与嵌入式加热实践
  • 基于ResNet50的轻量级垃圾分类识别工程:含训练、推理与迁移配置全流程
  • 谷歌排名突然下降是什么原因?老站长教你1小时找准病因
  • 谷歌排名突然下降是什么原因?教你3步清理别人发的垃圾外链
  • 基于ARM单板机与Leap Motion的DIY混合现实头显开发全流程解析
  • 歌词滚动姬:5分钟制作专业LRC歌词的终极免费工具
  • WarcraftHelper完整指南:三步让魔兽争霸3在现代电脑完美运行
  • Matlab版Sobol敏感度分析工具包:含采样、计算、可视化与多场景测试示例
  • 3分钟掌握DeepL Chrome翻译插件:免费高效的专业翻译解决方案