meeting-point/README.md
2026-01-09 18:52:32 +08:00

183 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 会面点 Meeting Point
一个帮助多人寻找最佳聚会地点的地图应用。输入多个参与者的位置自动计算几何中心并在中心点附近搜索咖啡馆、餐厅、KTV 等聚会场所。
![Preview](preview.png)
## ✨ 功能特点
- **📍 多点位置设置**
- 通过地址搜索添加位置
- 直接在地图上点击添加位置
- 支持输入提示和自动补全
- **🎯 智能中心计算**
- 使用球面几何算法计算多点中心
- 准确计算地球曲面上的几何中心
- **🔍 周边搜索**
- 支持自定义搜索关键词
- 可调节搜索半径500米-10公里
- 预设常用场所类型咖啡馆、餐厅、KTV等
- **🗺️ 地图可视化**
- 深色主题地图
- 清晰的标记和信息展示
- 搜索范围可视化
## 🚀 快速开始
### 前置要求
- Go 1.21+
- 高德地图开发者账号和 Web 服务 API Key
### 获取高德地图 API Key
1. 访问 [高德开放平台](https://lbs.amap.com/)
2. 注册/登录开发者账号
3. 进入「控制台」→「应用管理」→「创建新应用」
4. 添加 Key选择「Web 服务」类型
5. 复制生成的 Key
### 安装步骤
1. 克隆项目
```bash
git clone https://github.com/yourusername/meeting-point.git
cd meeting-point
```
2. 安装依赖
```bash
go mod download
```
3. 配置 API Key
复制配置文件模板并填入你的 Key
```bash
cp config.example.json config.json
```
编辑 `config.json`
```json
{
"amap_key": "你的高德地图API_Key",
"port": "8080"
}
```
或者使用环境变量:
```bash
export AMAP_KEY="你的高德地图API_Key"
export PORT="8080"
```
4. 启动服务
```bash
go run main.go
```
5. 访问应用
打开浏览器访问 http://localhost:8080
## 📖 使用说明
### 添加位置
有两种方式添加参与者位置:
1. **搜索添加**:在左侧搜索框中输入地址或地点名称,从下拉列表中选择
2. **点击添加**:直接在地图上点击想要添加的位置
### 搜索聚会地点
1. 添加至少 2 个位置点
2. 在「搜索类型」中输入或选择想要查找的场所类型
3. 调整搜索半径
4. 点击「搜索最佳会面点」按钮
### 查看结果
- 地图上会显示计算出的中心点(金色星星标记)
- 搜索到的场所会以绿色标记显示
- 左侧列表会显示详细信息,点击可在地图上定位
## 🏗️ 技术架构
### 后端
- **Go** - 高性能后端语言
- **Gin** - Web 框架
- **高德地图 Web API** - 地理编码、POI 搜索
### 前端
- **原生 JavaScript** - 无框架依赖
- **高德地图 JS API** - 地图展示和交互
- **CSS3** - 现代化 UI 设计
### API 端点
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/` | 主页面 |
| GET | `/api/config` | 获取配置 |
| POST | `/api/geocode` | 地址转坐标 |
| POST | `/api/center` | 计算中心点 |
| POST | `/api/search` | 搜索周边 POI |
| GET | `/api/tips` | 输入提示 |
## 📁 项目结构
```
meeting-point/
├── main.go # 后端主程序
├── go.mod # Go 模块文件
├── go.sum # 依赖锁定文件
├── config.json # 配置文件(需创建)
├── config.example.json # 配置文件模板
├── README.md # 项目说明
├── templates/
│ └── index.html # 前端页面模板
└── static/
├── css/
│ └── style.css # 样式文件
└── js/
└── app.js # 前端逻辑
```
## 🔧 配置说明
### config.json
```json
{
"amap_key": "高德地图API Key",
"port": "服务端口默认8080"
}
```
### 环境变量
- `AMAP_KEY` - 高德地图 API Key优先级高于配置文件
- `PORT` - 服务端口
## 📝 开发计划
- [ ] 添加路线规划功能
- [ ] 支持更多地图服务商
- [ ] 添加位置分享功能
- [ ] 移动端适配优化
- [ ] 添加历史记录功能
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交 Issue 和 Pull Request