# 店铺地址 **Repository Path**: leejason/shop-mapping ## Basic Information - **Project Name**: 店铺地址 - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-27 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 店铺定位导航 H5 极低成本的店铺定位导航解决方案,不开发 App、不购买地图商业授权、利用手机浏览器原生能力。 ## 截图 ![导航页](img/001.png) ![录入页](img/002.png) ## 成本估算 | 项目 | 方案 | 费用 | |-----|------|-----| | 服务器 | 阿里云/腾讯云最低配 (1核2G) | 30-90元/年 | | 域名 | .cn 或 .com | 30-60元/年 | | 地图授权 | 仅用 URL Scheme,不渲染地图 | 0元 | | SSL 证书 | Let's Encrypt | 0元 | | **总计** | | **约 60-150元/年** | ## 项目结构 ``` shop-mapping/ ├── frontend/ # 前端 H5 │ ├── index.html # 导航页面 │ ├── admin.html # 店铺录入页面 │ ├── css/ │ │ └── style.css # 样式文件 │ └── js/ │ ├── main.js # 主逻辑 │ └── coordtransform.js # 坐标转换库 ├── backend/ # 后端 API │ ├── api/ │ │ ├── stores.php # 店铺列表接口 │ │ └── stores-add.php # 店铺录入接口 │ └── config/ │ └── database.php # 数据库配置 ├── deploy/ │ └── nginx.conf # Nginx 配置文件 └── sql/ └── init.sql # 数据库初始化脚本 ``` ## 快速开始 ### 1. 数据库初始化 ```bash mysql -u root -p'你的密码' < sql/init.sql ``` ### 2. 修改数据库配置 编辑 `backend/config/database.php`,填入你的数据库信息: ```php define('DB_HOST', 'localhost'); define('DB_NAME', 'shop_mapping'); define('DB_USER', 'your_username'); define('DB_PASS', 'your_password'); ``` ### 3. 修改管理密码 编辑 `backend/api/stores-add.php`,修改密码: ```php $ADMIN_PASSWORD = 'your_strong_password'; ``` ### 4. 启动服务 **开发环境(PHP 内置服务器)**: ```bash php -S localhost:8080 ``` 访问:http://localhost:8080/frontend/index.html **生产环境(Nginx)**: ```bash # 复制配置 sudo cp deploy/nginx.conf /etc/nginx/sites-available/shop-mapping # 修改里面的路径和域名 sudo vim /etc/nginx/sites-available/shop-mapping # 启用站点 sudo ln -s /etc/nginx/sites-available/shop-mapping /etc/nginx/sites-enabled/ # 测试并重载 sudo nginx -t && sudo nginx -s reload ``` ### 5. HTTPS 配置 **Let's Encrypt 免费证书**: ```bash sudo certbot --nginx -d your-domain.com ``` ## 页面说明 | 页面 | 地址 | 说明 | |-----|------|------| | 导航页 | /frontend/index.html | 展示附近店铺,一键导航 | | 录入页 | /frontend/admin.html | 录入新店铺(需密码) | ## API 接口 ### 获取店铺列表 ``` GET /backend/api/stores.php?lat=39.99&lng=116.31 ``` **参数**: - `lat` - 用户纬度 (WGS84) - `lng` - 用户经度 (WGS84) **返回**: ```json { "code": 0, "message": "success", "data": { "user_lat": 39.9912, "user_lng": 116.3161, "stores": [ { "id": 1, "name": "星巴克 (中关村店)", "address": "北京市海淀区中关村大街1号", "lat": "39.9859895", "lng": "116.3123456", "phone": null, "meituan_url": "", "distance_km": 0.72 } ] } } ``` ### 添加店铺 ``` POST /backend/api/stores-add.php Content-Type: application/json { "password": "admin123", "name": "店铺名称", "address": "店铺地址", "lat": 39.9859895, "lng": 116.3123456, "phone": "010-12345678", "meituan_url": "美团门店链接" } ``` ## 数据库表结构 | 字段 | 类型 | 说明 | |-----|------|------| | id | INT (PK, AUTO) | 自增ID | | name | VARCHAR(100) | 店铺名称 | | address | VARCHAR(255) | 店铺地址 | | lat | DECIMAL(10,7) | 纬度 (GCJ02坐标系) | | lng | DECIMAL(11,7) | 经度 (GCJ02坐标系) | | phone | VARCHAR(20) | 联系电话 | | meituan_url | VARCHAR(255) | 美团门店URL | | created_at | TIMESTAMP | 创建时间 | ## 坐标系说明 - 数据库统一存储 **GCJ02**(火星坐标) - 高德、腾讯地图直接使用 GCJ02 - 百度地图需要转换为 BD09(前端正转换) - GPS 原始坐标是 WGS84(后端自动转换) ## 导航方式 | 地图 | URL Scheme | 说明 | |-----|-------------|------| | 高德 | amapuri://route/plan/ | 推荐首选 | | 百度 | baidumap://map/direction/ | 需坐标转换 | | 腾讯 | qqmap://map/routeplan/ | 备用 | | 美团 | meituan:// | 门店链接跳转 | ## 安全建议 1. 修改默认管理密码为复杂密码 2. 生产环境限制 CORS 来源 3. 数据库密码使用环境变量 4. 启用 HTTPS(地图定位必需) 5. 考虑加防暴力破解机制 ## 技术要点 1. **不渲染地图** - 页面只显示文字列表,点击导航才跳转 App,避免地图商业授权 2. **URL Scheme** - 唤起地图 App,不依赖 JS SDK 3. **服务端距离计算** - SQL 计算距离,避免收费 API 4. **坐标转换** - 使用开源库前端转换,不调 API