R Roam 获取 Roam

没有信号、开着飞行模式,GPS 还能定位吗?

能——而且弄明白为什么能,就能顺带解开大多数人对手机导航的困惑。你的手机是靠听来算出自己在哪儿的,不是靠问。流量真正给你买到的,是速度和一张地图。

先说结论:能。在一格信号都没有的山上,在 SIM 卡完全不起作用的国家,甚至把飞行模式打开,你的手机照样能算出自己在哪里——前提是飞行模式没有顺手把定位服务也关掉,而在 iOS 上它不会。

这个误会值得拆开来说,因为几乎每个人都有过那种经历:在一个没信号的地方打开地图 App,看见一个蓝点孤零零地待在一块灰色方格上,于是断定定位坏了。定位没坏,是地图没来。这是两套完全不同的系统,只不过被画在了同一块屏幕上而已。

手机是在听,不是在问

卫星定位接收机,名字里那个「接收」就是字面意思。天上大约三十颗 GNSS 卫星在不停地广播一段信号,内容大致是「我是 11 号卫星,这是我的轨道参数,我的时钟现在读到这里」。信号是单向的,从太空到你这里。你的手机从不往回发任何东西,也没有哪颗卫星知道你存在。

接收机从四颗以上卫星的广播到达时间的微小差异里,解出四个未知数:你的纬度、你的经度、你的高度,以及它自己那块廉价石英钟相对原子时的偏差。整套把戏就是这么回事。它需要的只是一片还算开阔的天空,除此之外什么都不要。不需要 SIM 卡,不需要流量套餐,不需要 Wi-Fi,不需要账号,也不需要订阅。

这也正是 GNSS 在地球上任何地方都免费、而且你的位置不可能被「用完」的原因。不管有没有人在听,卫星都在广播。

那流量到底在干什么

两件事,而且哪一件都不是定位本身。

让第一次定位快一点

想快速找到卫星,接收机得先大致知道它们此刻在天上的什么位置。这份数据——历书和星历——卫星自己也在播,但播得很慢:完全从零开始靠空中信号收齐,可能要三十秒到几分钟。辅助 GNSS 做的事情很朴素,就是把同样的轨道数据从网络上下载下来,几分之一秒就完事,接收机于是知道该往哪儿找。

没有辅助,你得到的就是一次冷启动。定位照样会来,只是要多等一会儿。在没信号的地方,人们真正察觉到的其实就是这一点,所以出发前在路口站着别动、给它一分钟,是值得的。

底下那张地图

地图瓦片——街道、等高线、卫星影像——是从服务器上取回来的图片,和定位没有任何关系。没有流量的时候,你拿到的是自己的坐标,却没有底图可以把它画上去,这正是「灰色方格」那种体验:丢的是一张图,不是一个位置。

没有信号时,仍然会出问题的地方

在完全没有信号的地方记录一条路线

对一台记录器来说,真正要紧的问题不是定位点会不会来——它会来——而是 App 把它放到哪里去了。一个把整趟路先攒在内存里、结束时再上传的 App,给自己造了一个定位系统本身并不存在的网络依赖。一个从服务器上读取你历史记录列表的 App,造了第二个,而第二个才是真正伤人的那个:你进了隧道,打开 App,发现自己的记录好像全没了。

Roam 在结构上走的是另一条路。每一个定位点在到达的那一刻就被提交到手机上的数据库里,和这次记录的累计数字写在同一次事务中,所以不存在某一公里只活在内存里的那个窗口。列出你历史记录的那个界面读的是同一个本地数据库,它也没有别的地方可读——仓库里有一道构建闸门,会扫描整个模块里有没有出现联网相关的符号,只要出现一个就让构建失败。之所以要做到这一步,是因为这个 App 早期的某个版本确实是从服务器上读那份列表的,也确实产生了上面描述的那种「在隧道里打开,看见一片空白」。

老老实实要说的例外是地图的底图影像,它和任何一张地图一样,是从瓦片服务取回来的。没有流量时,你的路线依然被画出来、被计算、被保存下来;它背后的街道可能不会出现。那是世界的一张图片没来,不是你这趟路没了。

常见问题

飞行模式下 GPS 还能用吗?

能。飞行模式关掉的是发射机——蜂窝,默认还包括 Wi-Fi 和蓝牙——而 GNSS 的接收是被动的,它照常工作。在 iOS 上,定位服务是一个独立的开关,不会被飞行模式关掉。你会遇到的是更慢的首次定位,因为辅助 GNSS 下载不到轨道数据,另外就是没有地图瓦片。

GPS 会消耗流量吗?

定位本身一点都不用。辅助 GNSS 会下载几 KB 的轨道数据来加快首次定位,而地图瓦片可能用掉相当可观的流量——但那是地图在用,不是定位在用。

为什么我一没信号,手机就说「无法获取位置」?

通常是一次还没完成的冷启动,或者你所在的地方根本看不见天空。走到户外,站着别动,给它一分钟。如果某个 App 给你的是一块空白的界面、而不是一块加载得慢的界面,那么它多半是在等服务器,而不是在等卫星。

在国外徒步,能不开数据漫游就记录吗?

可以。把手机切到飞行模式照常记录就是了——定位不花钱,也不经过任何网络。受影响的只有需要联网取瓦片的地图,所以出发前先把要用的离线地图下好,或者接受一条画在空白背景上的路线。

一个不会把这趟弄丢的记录 App

Roam 每收到一个定位点就立刻写进手机,和当前的累计数字在同一个事务里落盘;信号断掉的那一段标成断的,不拿一条直线糊过去;爬升读的是气压计,不是 GPS 高度。没有账号,不用登录,不同步。完整记录一趟、看它、回放它,都是免费的。

在 App Store 下载

相关文章

全部文章