• 首页
  • 归档
  • 链接
  • 动态
  • 微语
  • 关于
  • 搜索
  • 夜间模式
    ©2026  冬山闲记 Theme by OneBlog

    冬山闲记博客

    搜索
    标签
    # 主题 # 电影 # 政府工作报告 # 惊蛰 # 体验 # 飞驰人生3 # 电影院 # Markdown # 软件 # 编辑器
  • 首页>
  • 编程>
  • 正文
  • 足迹readme

    2026年02月27日 31 阅读 0 评论 7096 字

    XiaoTen-FootprintMap(小十足迹地图)

    地址[url=https://github.com/Jiosanity/XiaoTen-FootprintMap]




    一个基于高德地图的纯前端足迹地图组件,支持标记集群、分类筛选、照片轮播等功能。

    简体中文 | 在线演示

    项目地址:https://github.com/Jiosanity/XiaoTen-FootprintMap

    ✨ 特性

    • 🗺️ 纯静态实现 - 纯前端,无需后端,仅需引入 JS/CSS 文件
    • 🎯 智能标记集群 - 网格算法自动合并附近标记,提升大数据量展示性能
    • 🏷️ 分类筛选 - 自动提取分类标签,支持一键筛选
    • 🌓 主题自适应 - 完美适配亮色/暗色主题,自动同步切换
    • 📸 照片展示 - 支持多图轮播和灯箱放大查看
    • 📱 移动端优化 - 响应式设计,触控友好
    • 🎨 自定义标记 - 6种预设渐变色 + 自定义颜色支持
    • ⚡ 性能优化 - 精简代码(475行 JS),按需加载
    • 🧭 自定义控件 - 在地图右上角(或移动端右下)提供「重载视图 / 全屏 / 放大 / 缩小」四个控件,避免和地图原生控件重叠并支持暗黑主题。
    • 🔌 即插即用 - 支持任何网站:WordPress、Hexo、Jekyll、Hugo 等

    📸 演示

    在线演示:

    https://footprintmap.xiaoten.com/

    提示:演示页右上角“🔑 API Key”按钮可快速填写并保存你的高德 Key,页面会自动使用此 Key 加载地图。

    足迹-小十的个人博客

    🚀 快速开始

    1. 引入文件(自动引导,无需写初始化代码)

    在 HTML 页面中引入 CSS/JS,并放置一个容器元素。组件会自动扫描类名为 .footprint-map 的元素并初始化。

    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <title>我的足迹地图</title>
      <!-- 引入 CSS(本地或 CDN,二选一) -->
      <link rel="stylesheet" href="css/footprintmap.css">
      <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Jiosanity/XiaoTen-FootprintMap@v1.3.0/static/css/footprintmap.css"> -->
      <style>
        .footprint-map { width: 100%; height: 600px; }
      </style>
      <script>
        // 可选:在运行时写入本地存储中的 Key(也可直接在容器 data-amap-key 上写)
        localStorage.setItem('amapKey', '你的高德地图APIKey');
      </script>
      <!-- 引入 JS(本地或 CDN,二选一) -->
      <script defer src="js/footprintmap.js"></script>
      <!-- <script defer src="https://cdn.jsdelivr.net/gh/Jiosanity/XiaoTen-FootprintMap@v1.3.0/static/js/footprintmap.js"></script> -->
      <!-- 无需单独引入高德地图脚本,组件会按需加载(仅支持高德 AMap) -->
      <!-- 无需手写 new FootprintMap(...),组件会自动初始化 -->
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="color-scheme" content="light dark">
      <link rel="icon" href="data:,">
      <link rel="preconnect" href="https://webapi.amap.com">
      <link rel="dns-prefetch" href="https://webapi.amap.com">
      <link rel="dns-prefetch" href="https://a.amap.com">
      <link rel="dns-prefetch" href="https://vdata.amap.com">
      <link rel="dns-prefetch" href="https://restapi.amap.com">
      <link rel="dns-prefetch" href="https://lbs.amap.com">
      <link rel="dns-prefetch" href="https://webapi.amap.com">
      <link rel="dns-prefetch" href="https://jiosanity.github.io">
      <link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
      <link rel="dns-prefetch" href="https://fastly.jsdelivr.net">
      <link rel="dns-prefetch" href="https://gcore.jsdelivr.net">
    </head>
    <body>
      <!-- 地图容器:至少提供数据源地址 data-json;amap-key 可选(也可走 localStorage) -->
      <div class="footprint-map"
           data-json="data/footprints.json"
           data-amap-key="可选:直接写你的Key"></div>
    </body>
    </html>

    2. 准备数据

    创建 data/footprints.json 文件:

    {
      "locations": [
        {
          "name": "北京",
          "coordinates": "116.4074,39.9042",
          "description": "中国的首都",
          "date": "2024-05-01",
          "categories": ["2024", "旅行"],
          "markerColor": "sunset"
        }
      ]
    }

    3. 获取 API Key

    前往 高德开放平台 注册并创建应用,获取 Web 端 JS API Key。

    4. 完成!

    直接打开 HTML 文件或通过本地服务器访问即可看到地图。详细文档请查看 安装指南。

    📖 文档

    • 安装指南 - 详细的集成步骤
    • 数据格式 - JSON 数据结构
    • API 文档 - JavaScript API 参考
    • 自定义样式 - CSS 自定义指南

    🎨 标记颜色预设

    预设名称效果使用方式
    sunset → "markerColor": "sunset"
    ocean → "markerColor": "ocean"
    violet → "markerColor": "violet"
    forest → "markerColor": "forest"
    amber → "markerColor": "amber"
    citrus → "markerColor": "citrus"

    也可以使用自定义颜色:"markerColor": "#ff6b6b" 或 "markerColor": "rgb(255,107,107)"

    🔧 使用要点

    • 容器:使用类名 footprint-map 的元素作为地图容器,建议通过 CSS 设定高度。
    • 数据:通过 data-json 指定 JSON 数据地址。
    • Key:通过 data-amap-key 或 localStorage('amapKey') 提供高德 Key。
    • 初始化:无需手写 JS 初始化,组件会在 DOMContentLoaded 后自动扫描并挂载。
    • 主题:当页面根节点存在 .dark 类时自动切换为暗色地图样式。

    🛠️ 技术栈

    • 高德地图 Web JS API 2.0 - 地图服务
    • Vanilla JavaScript (ES6+) - 无框架依赖
    • CSS3 - 响应式样式

    🐛 Bug修复

    修复分类筛选时的视野过度缩放问题

    • 问题现象: 当启用“集群模式”时,如果筛选的分类下的所有地点在地理上非常集中,它们会被聚合为一个或极少数几个集群点。此时地图的 setFitView 功能会因目标过少而判断失误,导致地图被无限放大,视野崩溃。
    • 解决方案: 重构了 renderMap 函数的核心逻辑。创建了一个名为 fitViewToPoints 的辅助函数,该函数不再依赖于地图上实际渲染出的标记点或集群点来调整视野。而是基于筛选后的原始地理坐标数据,通过在地图上添加一个临时的、不可见的覆盖物(AMap.Polyline)来精确计算出能包含所有目标点的地理边界,然后命令地图缩放至此边界,完成后再移除该临时覆盖物。这从根本上解决了因集群聚合导致视野判断错误的问题,确保了在任何数据分布下都能提供稳定、正确的缩放体验。

    📝 更新日志

    查看 CHANGELOG.md 了解详细的版本更新历史。

    最新版本 v1.3.0 (2025-11-19)

    • 🚀 项目开源:源码已托管至 https://github.com/Jiosanity/XiaoTen-FootprintMap,包含示例数据、文档与演示页面。
    • 🛠️ 新增可视化编辑器(editor.html):提供本地交互式编辑体验,支持地图拾取坐标、添加/编辑地点、导入示例/JSON、生成并下载 JSON、复制到剪贴板以及即时预览(含聚类、筛选、主题同步)。
    • 📱 编辑器移动端优化:修复按钮换行缩进、日期行在窄屏保持一行、图片查看器与轮播滚动优化等交互细节。
    • ⚡ 其它若干细节修复与文档补充(CHANGELOG 中有完整记录)。

    v1.2.0 (2025-11-19)

    • ✨ 新增 2D 地图模式,禁用旋转和倾斜
    • ⚡ 代码精简:JS 从 879 行优化到 475 行(减少 45.9%)
    • 🎨 完善黑暗模式适配(缩放控件和比例尺)
    • 🐛 修复多项 UI 细节问题

    🤝 贡献

    欢迎提交 Issue 和 Pull Request!

    1. Fork 本仓库
    2. 创建特性分支 (git checkout -b feature/AmazingFeature)
    3. 提交更改 (git commit -m 'Add some AmazingFeature')
    4. 推送到分支 (git push origin feature/AmazingFeature)
    5. 提交 Pull Request

    📄 开源协议

    本项目采用 MIT 协议开源。

    🙏 致谢

    • 灵感来源:王叨叨的足迹管理插件
    • 地图服务:高德开放平台

    📧 联系方式

    • 作者:xiaoten
    • 网站:xiaoten.com
    • Issue:GitHub Issues

    如果这个项目对你有帮助,请给个 ⭐️ Star 支持一下!

    本文著作权归作者 [ 老段同学 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    足迹
    取消回复

    发表留言
    回复

    首页归档链接动态微语关于
    Copyright©2026  All Rights Reserved.  Load:0.018 s
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。