CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
这是一个个人旅行足迹展示项目,使用HTML5 Canvas技术在交互式世界地图上标记用户去过的地方。项目使用纯前端技术,无需后端服务器。
文件结构
- index.html- 主页面,包含地图初始化、事件处理和UI逻辑
- cities.json- 配置和数据文件,包含页面标题、地图标题和级联结构的城市数据
- pointmap.min.js- 第三方地图库(压缩版),提供PointMap类用于地图渲染
核心功能
地图初始化
- 使用PointMap类创建世界地图实例
- 从cities.json加载配置和城市数据
- 自动应用页面标题和地图标题配置
- 自动将级联结构转换为扁平结构以兼容地图显示
- 地图容器ID为”worldMap”
交互功能
- 鼠标悬停显示城市名称
- 窗口大小变化时自动重新渲染地图(使用防抖优化)
- 支持多点重叠显示(同一坐标的多个城市会换行显示)
样式定制
- 地图背景色:#4262b0
- 标题栏样式与地图背景协调
- 悬停提示框使用半透明黑色背景
开发指南
配置文件结构
cities.json包含配置和城市数据两部分:
| 1 | { | 
添加新城市
在cities.cities部分按级联结构添加:
| 1 | { | 
优势:
- 统一配置管理:标题、城市数据都在一个文件中
- 结构清晰,按地理位置组织
- 便于统计各国家、地区的城市数量
- 支持未来扩展更多地理信息功能
- 自动转换兼容现有地图功能
修改地图样式
主要样式在index.html的<style>标签中定义:
- .world-map__title: 标题样式
- #worldMap: 地图容器样式
- .world-map__tips: 悬停提示框样式
调试地图
地图初始化代码在init()函数中,事件处理逻辑在mouseoverFn函数中。
技术依赖
- 浏览器需要支持HTML5 Canvas
- 使用ES6模块语法(需要现代浏览器)
获取城市坐标的工具
为了方便获取城市经纬度,可以使用以下工具:
- Google Maps - 搜索城市后点击坐标
- 百度地图坐标拾取 - https://api.map.baidu.com/lbsapi/getpoint/index.html
- GPS Coordinates - https://www.gps-coordinates.net/
坐标格式:[经度, 纬度](注意:经度在前,纬度在后)
本地开发
直接在浏览器中打开index.html即可运行,无需构建工具或服务器。