【独立开发】我做了一个记录你走过每一步的App,GPS漂移、坐标系偏移、电量崩了
木木木亦羽
2026年04月26日 09:03

去年冬天做完citywalk,手冻着打开手机看轨迹,就一条线。

看了两秒,把App关了。

那条线除了说明「我去过」,什么都说明不了。我走了哪些新街道?绕进去那个没名字的小巷算不算探索?穿过那片老居民区,我到底覆盖了多少地方?

没有答案。所有的App给我的只有步数和卡路里,好像我出门是为了减肥,不是为了探索。

就这样我开始做**雁过留痕**,一个把你的GPS轨迹换算成**面积(km²)**的App。不是轨迹线,是你真正踩过的土地面积。以25米为精度的网格,每个格子踩到才染色,踩过就算数,永久累积。

---

先说有个用户在评论区写了这么一句话,我看到的时候愣了一下:

> 「人生总要留下一些什么。大雁飞过,留下了痕迹。」

他说的比我能说清楚的都准。我做这个的出发点说白了就这么朴素——出门一趟,得有点什么留下来,不只是一条线。

好,说回开发的事。

---

**网格算法:看起来三天搞定,实际上我删了三次**

把GPS轨迹转成面积,逻辑上不复杂:用25米网格切地图,记录轨迹经过哪些格子,统计数量乘以面积。

我第一版就这么做的,跑起来一看,用户站在原地不动,面积还在涨。

GPS在后台会漂移,站着不动坐标抖动半径能到十几米,平白多染了一堆格子。面积数字虚高,我自己用着都觉得不对劲。

加了平滑滤波,漂移压住了,但CPU跑起来手机发烫。后台挂一小时,电量掉得很难看。用户哪怕再喜欢这个功能,手机烫成暖宝宝也会卸载的。

删了,重写。

第三个方案改变了思路:后台只管记GPS点,不做任何实时计算。把连续轨迹切成一段一段的「TraceSegment」,每段至少要有8个有效点才算有效轨迹,短于这个阈值直接丢弃。用户走完回来,再批量处理格子覆盖、算面积。

这个8是反复跑出来的。我试过5、10、12,在步行上班、公园散步、商场逛街几个不同场景里来回测,5太松噪声进来一堆,12又会把十分钟以内的短途全过滤掉——用户出去买个早餐发现没有记录,体验很差。最后觉得8是能平衡两端的数字,就定了。

电量问题解决了,但我发现新问题:用户如果在同一条街走了很多次,路径有细微偏差,同一条街可能被记成两列格子,面积还是会偏高。

最后把网格精度锁死在25米,这个尺度下一条正常街道基本落在同一列格子里,误差在可接受范围内。不完美,但够用。

---

**省份解锁:国内地图有个坑,做之前没意识到**

我想加「省份解锁」玩法,用户的探索格子覆盖一个省,这个省就染色点亮。

内置中国行政区边界数据,判断格子和省份边界的重叠——听起来不复杂。

然后我发现:国内手机的GPS坐标是GCJ-02偏移坐标系,跟标准WGS-84有几百米的位移。不做适配的话省份解锁就乱了。有多乱?我实测的时候站在长安街,App判断我在朝阳区。坐标没出北京,人已经「跨区」了,这要是放出去用户肯定以为遇到了灵异事件。

花了几天把坐标转换适配进去,这才是做给中国用户用的东西应该有的基本功。

还有一个细节:省份解锁的阈值必须做成动态的。面积越小的省阈值越低,不然北京、上海这种小省市会比新疆难解锁——用户在上海住了十年,反而比在新疆路过一次更难点亮,这逻辑说不通。

---

**成就系统:我低估了这件事**

我以为成就是锦上添花,一周搞定。

花了将近一个月。

成就的维度一旦列出来就停不下来:总距离、连续打卡天数、夜间出行次数、周末记录天数、单次最长距离、解锁省份数、解锁城市数、中国探索面积、全球探索面积……每个维度一组徽章,每组徽章又有多个等级。

最后定了四条赛道:**探索轨迹**(走多远)、**坚持打卡**(连续多久)、**华夏版图**(省市解锁)、**环球足迹**(国家和全球面积)。

做完之后有点可惜的地方是:这套东西做得挺细,但目前用户量还很小,稀有徽章基本没人能点亮。精心摆了一桌,宾客还没到。不过徽章先在那里,总会有人来拿的吧。

---

**Widget:一个15分钟的时间戳**

Widget 我想做成「当日进度展示」,今天走了多少、新开垦了多少面积、距离下一等级还差多少。

Widget 和主 App 数据是隔离的,用 App Groups 共享本地缓存,这没什么,标准方案。

但有个边界情况:用户走完回来,主 App 还在算面积,Widget 读到的是旧数据,进度比实际少。用户会以为App有bug。

我加了一个写入时间戳:Widget 如果发现缓存超过15分钟没更新,显示「正在同步」的提示状态,而不是直接展示一个旧数字。

这个细节没人会注意到,除非它不在的时候。

---

**现在的状态**

上线到现在,下载量还不到200。说实话我不确定是触达方式的问题,还是「探索面积」这个概念本身还没找到对的人群。

我在想,「你的城市你探索了几%」这种数字是不是天然有攀比欲?如果加个朋友之间的面积排行,能不能让更多人愿意分享截图出来?还是说这套玩法根本就是小众需求,不会破圈?

不知道。先做着。

感兴趣的话收藏一下——下一篇写后台GPS保活,比这篇惨多了。iOS有个机制会在你不注意的时候把后台进程干掉,我为了让App活着研究了一套「骗」系统的方案,那段才是真正让我抓狂的部分,下篇写。