一个功能完整的地图瓦片服务管理系统,支持 XYZ 栅格瓦片和 3D Tiles 三维瓦片的统一管理、授权访问和数据统计。
- 支持 XYZ 栅格瓦片(PNG/JPG/WebP)
- 支持 3D Tiles 三维瓦片
- 可视化地图预览(Leaflet 2D / Cesium 3D)
- 自定义地图中心点和默认缩放级别
- 数据源启用/禁用控制
- API Key 生成和管理
- 数据源权限精细控制(可绑定多个数据源)
- IP 白名单限制
- Referer 白名单限制
- 调用次数统计
- 自动生成对应格式的访问 URL(XYZ/3D Tiles)
- 完整的瓦片请求日志记录(含 XYZ 和 3D Tiles)
- 请求类型标识(XYZ / 3D Tiles)
- 按 API Key、数据源、IP、时间筛选
- 显示响应时间和状态码
- 分页浏览,支持自定义每页条数
- 180 天明细数据保留,永久聚合统计
- 今日 / 昨日 / 本月调用统计
- 全部累计调用次数
- 近 7 天请求趋势图表
- Top 5 API Key 排行
- 实时数据可视化
- 登录密码 SHA256 加密传输
- 连续登录失败 5 次锁定 30 分钟
- JWT Token 认证
- Redis 会话管理
- 预览功能独立认证(不计入统计)
02MapTileSystem/
├── map-tile-system/ # 前端项目(Vue3 + TypeScript)
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 组件(MapPreview2D / MapPreview3D)
│ │ ├── router/ # 路由
│ │ ├── stores/ # 状态管理
│ │ ├── types/ # 类型定义
│ │ ├── utils/ # 工具函数
│ │ └── views/ # 页面视图
│ │ ├── dashboard/ # 仪表盘
│ │ ├── datasource/ # 数据源管理
│ │ ├── auth/ # 授权管理
│ │ ├── access-log/ # 访问日志
│ │ └── statistics/ # 统计报表
│ ├── vite.config.ts
│ └── package.json
│
├── backend/ # 后端项目(Go + Gin)
│ ├── cmd/
│ │ └── server/ # 主程序入口
│ ├── internal/
│ │ ├── handler/ # HTTP 处理器
│ │ ├── middleware/ # 中间件(JWT / API Key 鉴权)
│ │ └── model/ # 数据模型
│ ├── pkg/
│ │ ├── config/ # 配置管理
│ │ ├── database/ # 数据库初始化
│ │ ├── logger/ # 日志
│ │ ├── scheduler/ # 定时任务
│ │ └── utils/ # 工具
│ ├── configs/ # 配置文件
│ └── go.mod
│
├── PRD.md # 产品需求文档
└── README.md # 项目说明
- Vue 3 + TypeScript + Composition API
- Element Plus(UI 组件库)
- Tailwind CSS(样式框架)
- ECharts(数据可视化)
- Leaflet(2D 地图预览)
- Cesium(3D 地图预览)
- vite-plugin-cesium(Cesium Vite 集成)
- Axios(HTTP 客户端)
- Crypto-js(密码加密)
- Go 1.21+
- Gin(Web 框架)
- GORM(ORM)
- PostgreSQL(数据库)
- Redis(缓存 / 会话 / 登录限流)
- 定时任务调度器(每日日志汇总与清理)
- Node.js 20+
- Go 1.21+
- PostgreSQL 12+
- Redis 6+
cd map-tile-system
npm install
npm run dev
# 访问 http://localhost:5173cd backend
go mod download
# 修改 configs/config.yaml 配置数据库和 Redis 连接
go run cmd/server/main.go
# 服务运行在 http://localhost:8080- 用户名:
admin - 密码:
admin123
POST /api/auth/login— 登录
GET /api/datasources— 获取列表POST /api/datasources— 创建PUT /api/datasources/:id— 更新DELETE /api/datasources/:id— 删除
GET /api/apikeys— 获取列表POST /api/apikeys— 创建PUT /api/apikeys/:id— 更新DELETE /api/apikeys/:id— 删除
GET /api/statistics/overview— 概览GET /api/statistics/trend— 近 7 天趋势GET /api/statistics/details— 访问日志明细(分页)GET /api/statistics/top-keys— Top 5 API Key
GET /tiles/:dataset/:z/:x/:y— XYZ 瓦片GET /tiles/:dataset/tileset.json— 3D Tiles 入口GET /tiles/:dataset/3dtiles/*filepath— 3D Tiles 子文件
GET /api/preview/xyz/:dataset/:z/:x/:y— XYZ 预览GET /api/preview/3dtiles/:dataset/*filepath— 3D Tiles 预览
- 前端构建并部署到 Nginx:
cd map-tile-system && npm run build
- 后端编译:
cd backend && go build -o map-tile-system cmd/server/main.go
- 配置 PostgreSQL 和 Redis
- 配置 Nginx 反向代理(将
/api和/tiles代理到后端 8080 端口)
MIT License






