地图功能
查看旅行足迹、访客来源和博客网络
地图页面使用高德地图展示我的旅行地点、读者来源和订阅或友链站点,并根据当前视图提供不同的地点信息和交互方式。

地图界面
地图页面默认打开「我的足迹」,左侧悬浮按钮可以切换「我的足迹」「访客分布」和「博客网络」。桌面端显示按钮图标和名称,窄屏端保留图标按钮;切换视图时,地址栏会同步写入 view 参数,例如 /map?view=blogs,因此可以直接分享或收藏某个视图。
地图会根据当前视图自动调整初始范围和标记。点击标记可以打开地点信息,点击地图空白处会关闭信息卡片;多个位置靠近时会显示聚合标记,聚合标记会显示其中包含的地点数或访客数。访客分布和博客网络只显示到城市或国家级别,地图不会继续放大到没有实际意义的街道范围;我的足迹可以继续放大查看具体地点。
页面底部会显示当前年份、站点名称以及当前视图的统计信息。数据加载失败时,右下角会出现「加载失败,点击重试」;高德地图初始化失败时会出现「地图加载失败,点击重试」。没有对应数据时,页面会显示「还没有任何足迹」「还没有访客足迹」或「还没有博客站点」。地图会跟随站点的浅色或深色主题切换底图样式。
我的足迹
「我的足迹」读取后台已经启用的旅行地点,并将每个地点显示在地图上。地点有封面时使用圆形图片作为标记,没有封面时使用蓝色圆点;地点较多或位置接近时,地图会先合并显示,继续放大后再查看单独地点。
点击地点标记会打开信息卡片,卡片显示地点名称、描述和封面,并列出关联的文章。点击文章标题可以进入对应的文章详情页;一个地点可以关联多篇文章,文章较多时卡片会显示部分文章和文章总数。地点卡片还提供「在高德地图查看」二维码,使用手机扫码即可在高德地图中打开当前坐标。
地图右下角会显示已到访的省市数量和地点数量。登录用户在存在旅行地点时还会看到「编辑足迹」入口,点击后会在新窗口打开后台的旅行地点管理页面。文章详情页和关于页面中的旅行地点入口也会跳转到地图,并可以直接聚焦到指定地点,例如 /map?view=travels&place=1。
访客分布
「访客分布」根据已经审核的评论记录整理读者来源,并将读者归并到对应的城市或省份。相同读者的多条评论只计算一次,地图只使用昵称、头像、网址、评论摘要和关联文章等公开展示信息,不会向前台返回原始 IP 地址或邮箱。
一个城市只有一位读者时,地图显示该读者的头像;同一城市有多位读者时,标记会显示访客数量。点击标记可以查看该地点的读者列表,列表中显示读者昵称、头像、个人网址、最近关联的文章和评论摘要,文章链接可以直接定位到对应评论。读者较多时,卡片只显示部分读者并给出总人数;多个城市聚合后,点击聚合标记会直接打开合并后的读者信息。
右下角会显示访客总数、海外访客数量和无法定位的访客数量。海外访客和无法解析位置的访客会计入统计,但不会在地图上生成不准确的坐标。
博客网络
「博客网络」会合并本站订阅的博客和已经启用的友情链接,并根据站点域名解析其服务器位置。相同域名只保留一个站点,订阅源和友链重复时优先使用订阅源;一个站点存在多个服务器或 CDN 节点时,地图可以显示多个位置。
博客网络中的单个标记使用站点头像,没有头像时使用站点名称的首字作为占位。点击标记会显示站点名称、订阅或友链来源、服务器位置和服务商信息;订阅站点提供「查看 TA 的文章」入口并进入订阅页面,友情链接提供「访问站点」入口并在新窗口打开外部地址。多个站点位于同一位置时,信息卡片会按订阅站点和友情链接分组列出全部站点。
右下角会显示站点总数、海外站点数量和无法定位的站点数量。由于博客网络展示的是域名解析得到的服务器位置,地图上的标记表示站点服务器或节点所在位置,不代表站长或读者的实际位置。
管理旅行地点
登录后台后打开「旅行地点」即可管理「我的足迹」中的地点。列表显示地点名称、坐标、关联文章、排序值和启用状态,可以点击「添加地点」创建新地点,也可以编辑、启用、禁用或删除已有地点。

添加或编辑地点时,需要填写名称、经度和纬度。坐标可以直接输入,也可以在地图选点区域点击地图或拖动标记自动填写;经度范围为 -180 到 180,纬度范围为 -90 到 90。地点还可以填写描述、封面图 URL 和排序值,封面会用于前台地图标记和地点信息卡片。

「关联文章」支持按文章标题或文章 ID 搜索,勾选后可以把多篇文章关联到同一个地点。文章编辑页的「地图地点」设置也可以选择已经创建的旅行地点,选择或移除地点后会立即更新当前文章的关联关系。
禁用的地点不会出现在前台地图中,重新启用后会恢复显示。删除地点会同时移除它与文章的关联,地图和文章详情页中的对应入口也会随之消失;保存地点或修改文章关联后,重新打开地图即可看到最新数据。
地图配置
地图使用高德 JavaScript API。部署时在 .env 或运行环境中配置 AMAP_KEY 和 AMAP_SECURITY_CODE,具体字段说明见 环境变量。
生产环境可以在 site.config.ts 中开启 features.amap.proxy,由服务端代理加载高德地图脚本,浏览器不会直接读取地图 Key;开发环境默认使用直连模式,需要运行环境能够提供这两个变量。将 features.amap.entry 设为 false 后,站内的地图入口会隐藏,但已经知道 /map 地址的用户仍可能直接访问页面。
地图页面的数据分别由 /api/travels、/api/footprint 和 /api/blog-network 提供,地图渲染与标记交互由 app/components/TravelMap.vue 实现,后台地点管理由 app/pages/admin/travels.vue 实现。