WP Manifestindependent plugin directory
manifest / content / footprintmap

Footprint Map 足迹地图

A personal travel-footprint map for WordPress, powered by AMap (高德地图) JS API.

by Aermisty · github.com/aermisty/footprintmap · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/aermisty/footprintmap/archive/refs/heads/main.zip

Readme

🗺️ Footprint Map · 足迹地图

A personal travel-footprint map for WordPress, powered by AMap (高德地图) JS API.
在 WordPress 里记录「你去过的地方」,并把足迹渲染成一张可交互的世界地图。

简体中文 · English summary


Footprint Map 是一个中文友好的 WordPress 插件:你在后台用高德地图点选去过的地方(自动取经纬度、反查省市国家、可关联多篇文章),在前台用一行短代码 [footprintmap] 把全部足迹渲染成一张支持聚合、点击放大、行政区着色的可交互世界地图。

  • ✅ 基于高德地图 JS API v2.0,国内加载快、无 Google 依赖
  • ✅ 国内省级行政区 / 国外国家自动着色,边界数据内置、零外部请求
  • ✅ 点位聚合 + 点击拆开,密集地区也能逐个看清
  • ✅ 一个地点可关联多篇文章,前台以文章封面图呈现
  • ✅ CSV 导入 / 导出,数据可迁移、可备份

📦 一、功能特性

特性 说明
🖱️ 后台点选建点 后台内置地图,单击选点即自动取经纬度并反查省 / 市 / 国家,可自定义名称、随时删除
🔗 关联多篇文章 一个地点可关联多篇文章;可选用「标签名」只列出打了指定标签的文章
🔴 前端自动聚合 缩小时近邻点合并为红色圆点 + 白色数字,放大后按就近关系自动拆分
➕ 点击聚合点放大 点聚合圆点即聚焦放大;密集区支持逐级点开直到全部单点可见
🖼️ 单点样式 关联了文章的单点显示文章特色图;无文章默认显示红色小圆点(可在后台设置一张默认点位图统一观感)
💬 点击气泡 国内点显示省份、国外点显示国家;有文章则顶部展示封面、下方列出全部文章标题,右上角 × 关闭
🗺️ 行政区着色 国内点把所在省级行政区填浅绿(含港澳台与南海诸岛归属);国外点用内置世界边界填充;缺国名/省名的点按经纬度自动推断归属
🧭 视野与控件 默认世界广角视野,右下角显示已去地点数,右上角 + / − / home 缩放复位
📄 短代码 任意页面插入 [footprintmap] 即可渲染
💾 CSV 迁移 一键导出全部点位;导入支持表头/无表头、多种编码自动识别、覆盖式重建
🌐 合规友好 中国省级边界符合国家测绘规范(详见下方「行政区着色的合规与实现」)

⚙️ 二、环境要求

依赖 要求
WordPress 5.6+ / 6.x
PHP 7.2+
高德开放平台账号 需申请 Web 端 (JS API) 的 Key 与配套「安全密钥」
网络 前台需能访问 webapi.amap.com(加载高德地图与边界由本地数据提供,无 QPS 压力)

🚀 三、快速开始

1. 安装

方式 A(推荐,zip):把本仓库打包为 zip,在 WordPress → 后台 → 插件 → 安装插件 → 上传 → 启用。

方式 B(目录):将本插件目录(含 footprintmap.phpadmin/public/ 等)放到 wp-content/plugins/ 下 → 后台启用「Footprint Map 足迹地图」。

2. 配置高德 Key(必填)

  1. 高德开放平台 注册并创建「Web 端 (JS API)」应用。
  2. 添加 Key,并复制该 Key 对应的 「安全密钥」(jscode)
  3. 在 Key 设置里把安全密钥与 Key 绑定,并配置域名白名单为你的站点域名。
  4. 回 WordPress → 足迹地图 → 地图设置,填入 Key安全密钥 → 保存。

3. 使用

[footprintmap]

把短代码插入任意文章 / 页面即可。


🧭 四、使用手册

添加一个地点

  1. 进入 足迹地图 → 地图管理
  2. 在左侧地图上单击你去过的地方(或用顶部搜索框定位)。
  3. 右侧自动回填经纬度与省 / 市 / 国家,输入自定义地点名。
  4. (可选)在「关联文章」下拉里选择要关联的文章,可多选。
  5. 保存标记。下方「已标记地点」列表支持搜索、按省/国家筛选、按关联文章数排序、分页;点某条可继续编辑或删除。

关联文章如何按标签过滤

「关联文章标签名」默认留空 = 列出全部文章;若只想让打了某些标签的文章出现在下拉里,在地图设置里填入标签名(可多个,用英文逗号分隔,如 旅行,攻略)。

CSV 导入 / 导出

位于 地图管理 页顶部:

  • 导出:生成 footprintmap-日期.csv(UTF-8 带 BOM,Excel 直接打开不乱码;不含 id)。
  • 导入覆盖更新——先清空全部旧点、再按 CSV 重建,导入后列表严格等于文件内容(不可撤销,请先导出备份)。
    • 支持带表头(中/英文列名自动对应)或无表头(固定顺序 name,city,province,country,lat,lng,post_ids)。
    • post_ids 用分号分隔文章 ID,如 12;34
    • 自动识别 UTF-8(含/不含 BOM)、UTF-16、GB18030/GBK 编码。

🌏 五、行政区着色的合规与实现

  • 中国国内地点:仅把足迹所在省级行政区填浅绿(支持台湾、香港 、澳门;海南省边界含南海诸岛,台湾含钓鱼岛、赤尾屿)。省级边界由插件内置 public/js/footprintmap-provinces.js 提供(34 个省级行政区,本地绘制、零高德请求)。
  • 中国之外地点:高德不提供国外国家边界,故用内置简化世界边界 public/js/footprintmap-world.js 本地绘制该国家范围。
  • 涉界争议国剔除:部分第三方世界数据会将藏南、阿克塞钦等划入印度,故插件对印度不做国家填充(仅显示点位),且内置世界数据不会用于绘制中国及其省级区域。

📁 六、目录结构

本仓库根即插件根:克隆后把整个目录放入 wp-content/plugins/ 即可启用。

footprintmap/                          # 仓库根 = 插件根
├── README.md                          # 本说明(GitHub 首页展示)
├── LICENSE                            # GPL v2 开源协议
├── .gitignore
├── footprintmap.php                   # 主插件文件(激活建表 / 菜单 / AJAX / 短代码 / 资源加载)
├── admin/
│   ├── map-admin-page.php             # 后台地图管理页
│   ├── settings-page.php              # 高德 Key / 设置页
│   ├── css/admin.css
│   └── js/
│       ├── admin-map.js               # 后台选点 / 反查 / 文章关联 / 列表分页筛选排序
│       └── media-picker.js            # 「默认点位图片」媒体库选择器
├── public/
│   ├── css/footprintmap.css
│   └── js/
│       ├── footprintmap.js            # 前台渲染 / 聚合 / 气泡 / 行政区着色 / 缩放控件
│       ├── footprintmap-world.js      # 世界国家边界(国外点着色)
│       └── footprintmap-provinces.js  # 中国 34 个省级行政区边界(含港澳台与南海诸岛)
└── uninstall.php                      # 卸载时清理数据表与设置

地点数据存储于自定义表 wp_footprintmap_locations(插件卸载时会一并清理)。


🛠️ 七、开发者指引

  • 高德 JS 通过轮询 window.AMap 就绪后再初始化,规避脚本加载时序竞态;缩放/移动只在 zoomend / moveend一次性重绘,保证动画流畅。
  • 聚合采用屏幕距离网格哈希 + BFS 归并(O(n)),避免逐点全表 O(n²) 扫描。
  • 前台点位数据用 transient 缓存(10 分钟 TTL)并在后台改动时显式失效,降低数据库压力。
  • 主要逻辑都在 JS,纯前端即插即用;后端 PHP 只负责数据与配置。

改动后自检node --check 校验 JS 语法;PHP 无 php lint 环境时可用括号配平做基本检查。


❓ 八、常见问题

问题 排查
地图空白 / 无法加载 高德 Key 域名白名单未包含站点、或 Key/安全密钥不匹配。检查地图设置与控制台。
前台只有聚合点、放不大 多为旧版 JS 缓存未更新——强制刷新 / 清缓存,确认加载的是最新版脚本。
国外国家不显示着色 该国不在内置世界边界中,或保存的国家名无法匹配;印度因合规原因仅显示点位。
气泡里的城市名不对 城市名来自反地理编码自动识别,可把地点名改成你的自定义称呼。

📝 License

本项目基于 GPLv2(GNU General Public License v2)发布,与 WordPress 生态保持一致。


English summary

Footprint Map is a WordPress plugin that lets you mark places you've visited on an AMap-based map in the admin, and renders your whole footprint as an interactive, clustered world map on the front end via the shortcode [footprintmap].

  • Backend: click anywhere on a map to drop a pin → geocode + reverse-geocode (province / city / country) automatically; attach multiple posts to one location.
  • Frontend: nearby points merge into red clusters with a count that split apart as you zoom in; single points show the post's featured image (or a configurable default image); clicking a point opens a bubble with the region name and linked articles.
  • Region coloring: domestic points tint their province light green (incl. Taiwan, Hong Kong, Macao & South China Sea islands); foreign points tint their country using bundled boundary data; points without a stored country are inferred by coordinates.
  • CSV import/export for migration & backup. AMap key + security code required.
  • Full Chinese documentation above; the underlying boundaries comply with PRC surveying & mapping regulations (India is intentionally not shaded due to disputed-border data).

License: GPLv2.

Read the full README on GitHub →

Releases

TagPublished
v1.0.0 Sep 9, 2026

These releases are tags only. The author does not attach a packaged zip, so there are no download counts to report.