← 项目
MappaVita

MappaVita

一个 SwiftUI 旅行日记应用,把你去过的地方变成一张能翻的地图——自动定位记录、照片 GPS 导入、回忆与成就。

类型
其他
角色
独立开发
Status
已归档
Tech
Swift SwiftUI MapKit Core Location PhotoKit Core Data Firebase Auth Cloud Firestore Firebase Storage MVVM
Started
2025年4月
Ended
2025年5月
MappaVita 的地图视图——记录下的地点标注在北美各处

概览

旅行很容易累积,却很难留住。一年之后那些地方就糊成一片,而本该唤起记忆的照片,埋在一个按日期而不是按地点排序的相册里。MappaVita 是一个 iOS 旅行日记,建立在相反的索引上:地图是主视图,照片、笔记、统计——所有东西都挂在”地点”下面。

MappaVita 的四个界面——地图、回忆、成就、个人主页

主要功能

  • 自动定位记录 —— 后台 Core Location 更新配合距离过滤,只有当你真的移动了才写入新的点。
  • 照片 GPS 导入 —— 扫描相册中照片的 EXIF 位置信息,把这些地点落到地图上,同时妥善处理相当一部分根本没有 GPS 标签的图片。
  • 手动添加地点 —— 自己补一个地方,配照片、日期和一段笔记;反向地理编码会根据坐标自动填好地名。
  • 地图优先 —— 每个地点都是一个标注,并做了聚合,避免密集城市变成一堆互相遮挡的图钉。
  • 回忆 —— 照片和日记挂在地点上,可以按时间线浏览。
  • 统计与成就 —— 去过的国家数、最远距离、最常去的地方、连续旅行天数,以及由这些里程碑解锁的徽章。
  • 分享与导出 —— 单个地点,或者整张世界地图的渲染快照,通过 iOS 分享面板发出去。

技术栈

  • SwiftUI + MVVM —— 45 个 Swift 文件,分为视图、视图模型、数据模型,以及一小组核心管理器(定位、照片位置、认证、持久化)。
  • MapKit —— 标注、自定义照片标注视图,以及处理密度的 MKClusterAnnotation
  • Core Data —— 地点、照片和回忆的本地存储,完全离线可用。
  • Firebase —— Auth 负责账号,Firestore 和 Storage 负责同步与照片托管。

为什么归档

MappaVita 是一个课程项目,交付时附带书面报告和演示,学期结束它也就停在那里了。它能跑,核心循环——记录、回访、回忆——是通的;只是从没经历过上架前那一轮打磨:权限文案、同步的健壮性、边界情况。这个想法比这份代码活得更久一些——我现在依然觉得,按地点索引的日记比按日期索引的好。

打个招呼 👋