「我到底去没去过那条路」——这个问题困扰我之后,我自己做了个足迹地图 App

起因:一张照片引发的开发冲动

去年十一月从成都出差回来,我翻相册想确认自己到底去没去过那条巷子。照片里有火锅、有招牌,但我死活想不起那是哪条路。打开高德看收藏,空的。翻大众点评历史订单,只有两家餐厅。那种感觉很奇怪——我确实到过很多地方,但没有任何一个工具能帮我「证明」这件事。

作为一个独立开发者,我的第一反应当然是:这东西我能不能自己做一个?

市面上有足迹功能的 App 不少,但它们的定位让我不太舒服。要么藏在运动记录的配速和心率数据里,要么挂在社交平台等你发布打卡。我的需求其实极其简单:一张安静的地图,上面填满我走过的地方。不需要跑了多少公里,不想把行踪分享给任何人。

于是有了「雁过留痕」这个项目。

技术选型与核心思路

iOS 端用 SwiftUI 搭建 UI,地图渲染这块花了不少时间打磨。核心逻辑其实不复杂:后台持续采集 CLLocation 数据,将轨迹点按一定密度存入本地数据库,然后在地图上做区域着色渲染。

简化后的后台定位采集大概长这样:

class LocationTracker: NSObject, CLLocationManagerDelegate {
    private let manager = CLLocationManager()
    
    func startTracking() {
        manager.allowsBackgroundLocationUpdates = true
        manager.pausesLocationUpdatesAutomatically = false
        manager.desiredAccuracy = kCLLocationAccuracyBest
        manager.startUpdatingLocation()
    }
    
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        // 过滤精度过低的点,写入本地存储
        let valid = locations.filter { $0.horizontalAccuracy < 50 }
        StorageManager.shared.save(valid)
    }
}

关键决策有几个:数据全部存本地,不做账号体系,不上传服务器。足迹数据属于非常私密的信息,我自己作为用户也不想它躺在某个服务器上。另外为了控制耗电,只采集位置信息,不做任何复杂的运动状态计算。三周实际使用下来,电池设置里后台耗电占比大概在 3%-5%,对续航几乎没有可感知的影响。

产品形态:自动记录 + 地图着色

打开 App 授权定位之后,用户几乎不需要再做任何操作。走路、骑车、坐地铁、开车——只要在移动,App 会在后台默默记下轨迹。回到家打开看一眼,今天走过的街道已经被着色了。

地图呈现方式很直觉:到过的区域有颜色,没去过的地方留白。日积月累之后,你会看到自己生活的城市从中心向外一点点「长」出来。整体像一个缓慢填色的游戏,只不过填色的颜料是你真实走过的路。

这里我想强调一点产品定位上的克制:雁过留痕不是运动 App。不记录配速,不统计卡路里,不分析步频。定位非常窄,就是「记录去过的地方」。这种克制让使用心智极低——不用「开始运动」也不用「结束运动」,没有任何需要主动触发的操作。

几个我比较满意的设计

轨迹着色 vs 圆点标记。比起在地图上打很多圆点标记的方案,我选择了轨迹着色。区别在于:圆点告诉你「到过这个坐标」,着色告诉你「走过这条路」。后者的信息密度更高,你能分辨出自己是沿着河边绕了一圈,还是穿过了老城区的几条窄巷。

像素风地图模式。这是一个额外的显示模式,把城市变成一个个小方格。走过的格子亮起来,没走过的保持灰暗。这个模式特别适合截图分享——我上周 Citywalk 走了一条环形路线,截图出来像是在城市里画了一个圈。如果你刻意规划路线,甚至能在地图上走出特定图案。

时间维度筛选。可以按天、按月、按年查看足迹。对于长期住在一个城市的人来说,这种时间尺度的对比很有趣——你会发现自己的活动半径比想象中小得多,或者某次周末闲逛其实比日常通勤探索了更多的区域。

全自动无遗漏。我试过其他几款有足迹功能的工具,有些需要手动开始记录,有些需要签到打卡。稍微忘记一次,那段路就空了。全自动记录解决了这个问题。当然代价是需要「始终」定位权限,首次使用时需要授权。

实际用了三周的感受

说实话,中间很多天完全忘记它在运行。某天下午突然想起来点开看,发现前两天去朋友家那条从没走过的路已经被记录下来了。这种「被动积累、主动回顾」的节奏是我想要的效果——不打扰你,不推送提醒,不要求每天打卡。

它适合经常出差、喜欢城市漫步、或者单纯想知道「我这辈子的脚步覆盖了多少地方」的人。给你的不是运动成绩,不是旅行攻略,只是一张慢慢被填满的私人地图。如果你要分析跑步数据、规划骑行路线,请用专门的运动 App,雁过留痕不做这些,也不打算做这些。

下载

iOS 平台,App Store 搜索「雁过留痕」即可下载。

如果有同样在做独立 App 的朋友,欢迎交流后台定位的功耗优化经验,这块坑确实不少。

posted @ 2026-08-17 23:02  samexxx  阅读(12)  评论(0)    收藏  举报