Locusify |上传旅行照片,自动生成路线地图和回放视频

0 阅读2分钟

Locusify — 上传旅行照片,自动生成路线地图和回放视频

img_v3_02v5_a5deb581-7df9-478b-a760-2d16be6984ag.gif

做了个小工具,解决一个自己的痛点:每次旅行拍了几百张照片,回来想看看完整路线,要么手动在地图上标点,要么用剪辑软件一帧帧做。太麻烦了。

思路很简单——手机拍的照片本身就带 GPS 坐标(EXIF 里),把这些坐标提出来,往地图上一扔,路线就有了。再加个按时间线的动画回放,录成 MP4,就是一段现成的旅行 Vlog。

在线地址:locusify.caterpi11ar.com

image.png

功能

  • 上传照片(JPG / PNG / HEIC / WebP / AVIF),自动读取 EXIF GPS 坐标
  • 交互式地图绘制路线,照片标记 + 聚合 + 轨迹动画
  • 时间线回放,支持摄像机跟随、速度调节
  • 录制回放导出 MP4,支持 Web Share API 直接分享
  • 中英双语,深色/浅色模式
  • 全部浏览器端处理,不上传任何数据

最后一点是刻意的设计选择。照片包含精确的地理位置,属于敏感数据,没有理由让它离开用户的设备。


技术实现

框架React 19(开了 Compiler)
语言TypeScript strict mode
构建Vite 7
样式Tailwind CSS 4
地图MapLibre GL
状态管理Zustand
数据请求TanStack Query
动画Motion
UI 组件Radix UI
GPS 提取exifr

纯前端项目,没有后端。GPS 解析、地图渲染、轨迹计算、视频录制全在浏览器里跑。视频录制用的 MediaRecorder API 抓取 canvas 流,编码成 MP4。


几个实现上的点

HEIC 支持:iPhone 默认拍 HEIC,浏览器原生不支持,需要在前端做格式转换后再读 EXIF。

照片聚合:照片多了地图会糊成一片,低缩放级别下把邻近点合并成聚合标记,放大后再展开。

回放动画:按照片拍摄时间排序,沿路线做插值动画,摄像机跟随当前位置。速度可调。

视频导出:用 MediaRecorder 录制地图 canvas,导出 MP4。支持 Web Share API,移动端可以直接分享到微信、相册等。


后续打算做的

  • 旅行历史——保存行程,下次打开能看到
  • 多行程合并——同一张地图上叠加多次旅行
  • GPX 导出——给需要的人用

最后

代码开源在 GitHub:github.com/caterpi11ar…

有问题或建议欢迎提 issue。