# 会面点 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!