Loading
1419 字
7 分钟

足迹页面使用指南:地图、后台与迁移脚本

AI 摘要

足迹页面功能概览#

足迹页面(/life/places/)以高德地图为核心,直观展示我去过的所有地方。主要功能包括:

  • 智能标记聚类:地图缩小时自动将相近的标记聚合为圆形数字标记,放大后展开为独立标记
  • 区域高亮联动:点击标记时自动高亮对应省份区域,支持切换高亮模式
  • 分类筛选:左上角分类列表根据标签自动生成,点击可筛选不同类别的地点
  • 信息弹窗:点击任意标记展示地点名称、日期、描述、照片等信息
  • 主题适配:地图自动跟随博客明暗主题切换
  • 响应式设计:适配桌面和移动端

本地数据格式#

足迹数据以 Markdown 文件存储在 src/content/life/places/ 目录下,使用 YAML frontmatter 定义字段:

---
date: 2026-01-30
province: 河南
city: 商丘
experience: 去睢县和宝宝见面了,玩的非常开心
visitCount: 99
lat: 34.460852
lng: 115.071786
url: https://trae.io
urlLabel: 游记
photos:
- https://synyan.cn/wp-content/uploads/cities/beijing.jpg
tags:
- 去过
- 探亲
---

字段说明#

字段类型必填说明
date日期到访日期
province字符串省份
city字符串城市
experience字符串体验描述
visitCount数字到访次数,默认 1
lat数字纬度
lng数字经度
url字符串相关链接
urlLabel字符串链接显示文字
photos数组照片 URL 列表
tags数组标签,如「去过」「探亲」「学校」等

没有 latlng 的地点不会显示在地图上,但仍会出现在地点列表中。

足迹管理后台#

访问方式#

在浏览器中打开 /admin/places/ 即可进入足迹管理后台。

功能介绍#

1. Token 设置#

页面顶部是 GitHub Token 输入框,用于将足迹数据同步到 Gist 暂存库。需要一个包含 gist 权限的 Personal Access Token,输入后点击「保存 Token」即可,Token 会保存在浏览器 localStorage 中。

2. 创建足迹#

填写以下信息:

  • 省份 / 城市:地点的基本信息
  • 详细地址:用于自动获取坐标(支持村庄等小地点)
  • 获取坐标:点击按钮调用高德地图 API 自动填充经纬度
  • 日期 / 到访次数:到访时间和次数
  • 体验描述:简短记录这次出行的感受
  • 标签:添加分类标签(如「去过」「探亲」「学校」)
  • 照片:添加照片 URL

点击「保存」后,数据会直接写入 Gist 暂存库。

3. 管理已有足迹#

页面底部展示 Gist 中所有暂存足迹,支持编辑和删除操作。

坐标获取#

后台集成了高德地图地理编码服务,支持两种方式获取坐标:

  1. 自动获取:填写省份、城市和详细地址后点击「获取坐标」按钮,系统会依次尝试地理编码和 POI 搜索
  2. 手动获取:如果自动获取失败,可使用高德坐标拾取器手动查找坐标后填入

需要在高德开放平台为 API Key 开通「Web服务 API」权限,地理编码接口才能正常工作。

Gist 暂存机制#

足迹后台采用「暂存库」设计:

  • 后台添加的数据保存在 GitHub Gist 中,不会直接显示在博客页面上
  • 博客页面只读取本地 src/content/life/places/ 目录下的 Markdown 文件
  • 这种设计让你出门在外时可以随时用手机或电脑通过后台快速记录足迹,回家后再统一迁移到本地

Gist 中的数据格式与本地 frontmatter 完全一致:

{
"id": "p-1783767954393",
"province": "河南",
"city": "商丘",
"lat": "34.460852",
"lng": "115.071786",
"experience": "去睢县和宝宝见面了",
"visitCount": 99,
"date": "2026-01-30",
"tags": ["去过", "探亲"],
"url": "https://trae.io",
"urlLabel": "游记",
"photos": ["https://example.com/photo.jpg"],
"markerColor": "sunset"
}

其中 idmarkerColor 是内部字段,迁移时会自动忽略。

迁移脚本#

功能#

scripts/MigrationFootprint/index.js 脚本将 Gist 中的暂存足迹数据一键迁移为本地 Markdown 文件。

使用方法#

在项目根目录执行:

Terminal window
# 迁移全部数据(默认迁移后清空 Gist 中已迁移的数据)
node scripts/MigrationFootprint/index.js
# 仅预览,不写入文件也不删除 Gist 数据
node scripts/MigrationFootprint/index.js --dry-run
# 迁移后保留 Gist 数据(不清空)
node scripts/MigrationFootprint/index.js --keep-gist

脚本行为#

  1. 从 Gist 读取暂存足迹数据(无需 Token)
  2. 逐条转换为 Markdown 文件,写入 src/content/life/places/ 目录
  3. 自动按「日期 + 省份 + 城市」去重,避免重复迁移
  4. 同日期不同地点的文件自动追加序号(如 2026-07-11-2.md
  5. 迁移完成后可选择清空 Gist 中的已迁移数据(清空操作需要 Token)

Token 配置#

读取 Gist 数据使用公开 URL,无需 Token。清空 Gist 数据需要 Token,按以下优先级读取:

  1. 环境变量 GITHUB_TOKEN
  2. 配置文件 src/config/externalPlacesConfig.ts 中的 githubToken 字段
  3. 项目根目录 .env 文件中的 GITHUB_TOKEN

输出示例#

╔══════════════════════════════════════╗
║ 足迹 Gist → 本地 Markdown 迁移 ║
╚══════════════════════════════════════╝
Gist 中共有 3 条足迹数据
✓ 2026-07-11 河南 · 商丘
✓ 2026-07-10 河南 · 安阳
✓ 2026-07-09 北京 · 朝阳
正在清空 Gist 中已迁移的 3 条数据...
════════════════════════════════════════
迁移完成
迁移成功: 3 条
跳过重复: 0 条
Gist 剩余: 0 条
════════════════════════════════════════

完整工作流#

  1. 出门在外:打开 /admin/places/,填写足迹信息,保存到 Gist 暂存库
  2. 回到家中:运行迁移脚本,将 Gist 数据同步到本地 Markdown 文件
  3. 博客展示:本地 Markdown 文件自动被足迹页面读取,地图和列表同步更新
  4. Gist 清理:迁移脚本默认清空已迁移的 Gist 数据,保持暂存库整洁

建议每次运行迁移脚本前先用 --dry-run 预览,确认无误后再正式迁移。

支持与分享

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

赞助
足迹页面使用指南:地图、后台与迁移脚本
https://blog.tsh520.cn/posts/博客指南/足迹页面使用指南/
作者
团子和蛋糕
发布于
2026-07-11
许可协议
CC BY-NC-SA 4.0

评论区

[ 公告 ]

如果你喜欢,那么欢迎来到我的世界!

了解更多
[ 音乐 ]
封面

音乐

暂未播放

0:00 0:00
暂无歌词
找不到相关结果。
[ contents ]
[ 全部文章 ]
我和宝宝在一起已经
---------TSH CXY---------
---------TSH
CXY---------
0 0 0
00 00 00
站点统计
文章
88
动态
48
记录次数
178
分类
6
标签
98
总字数
99,589
运行时长
0
最后活动
0 天前