212 lines
3.5 KiB
Markdown
212 lines
3.5 KiB
Markdown
# CMR Mini Program(彩图奔跑小程序)
|
||
> 文档版本:v1.0
|
||
> 最后更新:2026-04-02 08:28:05
|
||
|
||
|
||
## 📌 项目简介
|
||
|
||
CMR Mini Program 是一个基于微信小程序的定向运动平台,支持:
|
||
|
||
- 自定义地图(非第三方地图)
|
||
- 基于瓦片(XYZ)渲染
|
||
- TFW / GIS 数据定位
|
||
- 控制点(打卡点)与路线系统
|
||
- 适用于赛事、训练、互动地图等场景
|
||
|
||
本项目核心目标:
|
||
|
||
> 构建一套完全自研的「轻量级地图引擎 + 定向运动系统」
|
||
|
||
---
|
||
|
||
## 🧠 技术架构
|
||
|
||
```text
|
||
GeoTIFF + TFW
|
||
↓
|
||
QGIS 处理
|
||
↓
|
||
XYZ 瓦片(3857)
|
||
↓
|
||
小程序地图引擎
|
||
↓
|
||
控制点 / 路线 / 游戏逻辑
|
||
🗺️ 地图系统设计
|
||
坐标体系
|
||
类型 说明
|
||
EPSG:4326 经纬度(WGS84)
|
||
EPSG:3857 Web Mercator(瓦片使用)
|
||
瓦片规则
|
||
/{z}/{x}/{y}.png
|
||
|
||
标准 XYZ 瓦片
|
||
|
||
支持本地或服务器部署
|
||
|
||
支持自定义地图(非在线地图)
|
||
|
||
TFW 支持
|
||
|
||
支持读取:
|
||
|
||
meta.tfw
|
||
|
||
TFW 六参数:
|
||
|
||
A 像素宽度
|
||
D 旋转
|
||
B 旋转
|
||
E 像素高度(负)
|
||
C 左上角X
|
||
F 左上角Y
|
||
|
||
自动识别:
|
||
|
||
✅ 经纬度(EPSG:4326)
|
||
|
||
✅ 米制坐标(EPSG:3857)
|
||
|
||
并转换为地图中心点。
|
||
|
||
🏗️ 项目结构
|
||
cmr-miniprogram/
|
||
│
|
||
├── app.js # 全局逻辑
|
||
├── app.json # 全局配置
|
||
├── app.wxss # 全局样式
|
||
├── project.config.json # 项目配置
|
||
├── sitemap.json # 索引配置
|
||
│
|
||
├── pages/
|
||
│ ├── index/ # 首页
|
||
│ └── map/ # 地图页(核心)
|
||
│
|
||
├── components/ # 公共组件
|
||
│
|
||
├── utils/
|
||
│ ├── projection.js # 坐标转换
|
||
│ ├── tile.js # 瓦片计算
|
||
│ ├── tfw.js # TFW解析
|
||
│
|
||
├── engine/ # 地图引擎(核心)
|
||
│ ├── renderer/ # 渲染
|
||
│ ├── gesture/ # 手势处理
|
||
│ ├── camera/ # 视图控制
|
||
│ ├── overlay/ # 覆盖物(控制点等)
|
||
│
|
||
└── assets/
|
||
|
||
👉 小程序项目结构由 app.js / app.json / pages 等组成,是官方标准结构
|
||
|
||
⚙️ 开发环境
|
||
必备工具
|
||
|
||
微信开发者工具
|
||
|
||
VS Code(推荐)
|
||
|
||
Node.js(LTS)
|
||
|
||
开发模式
|
||
VS Code → 写代码
|
||
微信开发者工具 → 编译 / 运行
|
||
🚀 功能模块规划
|
||
1. 地图引擎(核心)
|
||
|
||
瓦片加载(XYZ)
|
||
|
||
经纬度 ↔ 屏幕坐标转换
|
||
|
||
拖拽 / 缩放
|
||
|
||
相机系统(center / zoom)
|
||
|
||
2. 数据层
|
||
|
||
TFW 解析
|
||
|
||
meta.json(可选)
|
||
|
||
控制点 JSON
|
||
|
||
3. 覆盖物系统
|
||
|
||
控制点(打卡点)
|
||
|
||
路线绘制
|
||
|
||
编号 / 标记
|
||
|
||
高亮 / 状态变化
|
||
|
||
4. 交互系统
|
||
|
||
点击点位
|
||
|
||
GPS 定位
|
||
|
||
判定是否到达控制点
|
||
|
||
5. 游戏逻辑
|
||
|
||
打卡顺序
|
||
|
||
计时
|
||
|
||
成绩记录
|
||
|
||
NPC / 问答扩展
|
||
|
||
📍 当前进度
|
||
|
||
✅ QGIS 瓦片生成
|
||
|
||
✅ XYZ 瓦片加载
|
||
|
||
✅ TFW 自动定位(支持 4326 / 3857)
|
||
|
||
✅ 浏览器调试页
|
||
|
||
🚧 小程序地图引擎开发中
|
||
|
||
🧩 后续计划
|
||
|
||
地图引擎小程序版(Canvas / View)
|
||
|
||
控制点系统
|
||
|
||
路线规划
|
||
|
||
离线地图支持
|
||
|
||
B端赛事管理系统
|
||
|
||
Web + 小程序统一架构
|
||
|
||
💡 核心设计理念
|
||
|
||
不依赖第三方地图(如高德/腾讯)
|
||
|
||
全部地图数据可控
|
||
|
||
支持离线 / 私有部署
|
||
|
||
面向定向运动深度定制
|
||
|
||
📌 适用场景
|
||
|
||
定向运动赛事
|
||
|
||
校园活动
|
||
|
||
城市探索游戏
|
||
|
||
户外训练
|
||
|
||
教育互动地图
|
||
|
||
🧠 一句话总结
|
||
|
||
这是一个“自研地图引擎 + 定向运动系统”的小程序项目,而不是普通地图应用。
|
||
|