MoGallery-给项目添加地图坐标

541 字
3 分钟
MoGallery-给项目添加地图坐标

内容来源于AI,仅用于参考

我查的是开源仓库 Afilmory/afilmory。它的“地图 + 坐标”实现,核心其实是两条线:

  1. 照片里的 GPS 坐标来自 EXIF
  2. 前端用 MapLibre 把这些坐标渲染成地图点位

实现链路

坐标是怎么处理的

  • convertExifGPSToDecimal() 会把 EXIF 坐标转成十进制度。
  • 它会根据 GPSLatitudeRef / GPSLongitudeRef 处理南纬、西经负号。
  • 还会校验范围是否合法:纬度 -90~90,经度 -180~180。
  • 转完后生成 PhotoMarker,里面保存 latitude、longitude、altitude 和对应照片对象。

地图是怎么画出来的

有没有地理编码

  • 有,而且是“可选增强”,不是地图展示的硬依赖。
  • packages/builder/src/plugins/geocoding.ts 提供 geocoding plugin。
  • packages/builder/src/photo/geocoding.ts 支持两种反向地理编码提供者:
    • Mapbox
    • OpenStreetMap Nominatim
  • 这个插件会把经纬度反查成 location.country、location.city、locationName。
  • 但当前地图页本身主要还是直接用 exif.GPSLatitude/GPSLongitude 来落点,不依赖 location 字段。

一句话总结 Afilmory 的地图功能本质上是:照片 EXIF GPS -> 写入 manifest -> 前端读取 manifest -> MapLibre 渲染 marker/聚合/自动缩放;如果你额外开启 geocoding plugin,还能把经纬度补充成人类可读的地点名。

如果你愿意,我可以下一步直接帮你画一张这个项目的“地图功能数据流图”,或者把这套实现抽成你项目里可复用的最小版本。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

MoGallery-给项目添加地图坐标
https://shaio.top/posts/dev/mogallery-照片gps信息调整/
作者
沙海
发布于
2026-03-16
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
沙海
Hello, I'm Shai.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
84
分类
15
标签
48
总字数
67,035
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.12.2
文章许可
CC BY-NC-SA 4.0

文章目录