在thinkphp6.x中集成高德与百度地图实现位置标记和距离计算:一、申请并配置api key;二、封装地理编码与距离测算工具类;三、设置百度ak及https白名单;四、实现逆地理编码与步行距离计算;五、控制器调用服务并返回坐标供前端标记。

如果您在 ThinkPHP6.x 项目中需要实现位置标记与两点间距离计算功能,则需对接第三方地图服务接口。高德地图与百度地图均提供标准化的 Web API 和 SDK,可通过 HTTP 请求调用其地理编码、逆地理编码、路径规划及距离测算能力。以下是集成这两种地图服务的具体操作步骤:
一、申请高德地图 API Key 并配置服务
高德地图开放平台要求开发者注册账号并创建应用以获取唯一 API Key,该 Key 将用于所有接口请求的身份验证与配额管理。
1、访问 https://console.amap.com 注册高德开发者账号并完成实名认证。
2、进入控制台,在“应用管理”中点击“创建新应用”,填写应用名称,选择“Web端”作为应用类型。
3、在应用详情页中添加“Web服务API”为启用服务,并记录生成的 Key 值。
4、在 ThinkPHP6.x 的 config/app.php 中新增配置项:'amap_key' => '您的高德Key'。
二、封装高德地理编码与距离测算工具类
通过封装独立的服务类,可复用地址转坐标(地理编码)与两点间直线/驾车距离(distance API)功能,避免重复请求逻辑。
1、在 app/common/service 目录下新建 AmapService.php 文件。
2、在类中定义 getGeocode($address) 方法,拼接高德地理编码 URL:https://restapi.amap.com/v3/geocode/geo?address=xxx&key=xxx。
3、定义 getDistance($origin, $destination) 方法,调用 distance 接口,参数 origin 与 destination 格式为 经度,纬度。
4、使用 ThinkPHP6.x 内置的 think\Http 发起 GET 请求,并对返回 JSON 做异常判断与字段提取。
三、申请百度地图 AK 并配置 HTTPS 白名单
百度地图 Web 服务 API 要求启用 SN 验证或设置 Referer 白名单,生产环境推荐使用 AK + Referer 组合方式校验,确保接口调用合法。
1、登录 https://lbsyun.baidu.com 进入控制台,点击“应用管理”→“创建应用”。
Map RTOS SDK - 高德地图嵌入式 Map SDK 接入助手,支持栅格/矢量 Map 地图渲染、覆盖物绘制、轨迹导航及适配器实现指南
2、填写应用名称,选择“浏览器端”类型,输入 Referer 白名单,例如:localhost、127.0.0.1 或您的正式域名。
3、保存后复制生成的 AK(Access Key),并在 ThinkPHP6.x 的 config/app.php 中添加 'baidu_ak' => '您的百度AK'。
4、确认所用接口协议为 HTTPS,且请求域名包含在白名单中,否则将返回 AK INVALID 错误。
四、实现百度地理逆编码与步行距离测算
逆地理编码可将经纬度转换为结构化地址信息,步行距离接口则适用于短距离位置关系判断,如门店周边 500 米范围筛选。
1、在 app/common/service 下新建 BaiduService.php 类文件。
2、实现 reverseGeocode($lng, $lat) 方法,调用接口:https://api.map.baidu.com/reverse_geocoding/v3/?ak=xxx&output=json&coordtype=wgs84ll&location=纬度,经度。
3、实现 getWalkingDistance($origin, $destination) 方法,使用步行路线 API:https://api.map.baidu.com/direction/v2/walking?ak=xxx&origin=纬度,经度&destination=纬度,经度。
4、解析响应中的 result.route.distance 字段,单位为米,返回整型数值。
五、在控制器中调用双地图服务进行位置标记渲染
前端页面需加载地图容器并初始化 JS SDK,后端负责提供坐标数据与标注点元信息,二者通过 AJAX 交互完成动态标记。
1、在控制器方法中实例化 AmapService 或 BaiduService,传入地址字符串获取经纬度。
2、构造包含 name、address、longitude、latitude 的数组,使用 json_encode() 输出为 JSON 响应。
3、在前端 HTML 中引入高德或百度 JS API,例如高德:<script src="https://webapi.amap.com/maps?v=2.0&key=%E6%82%A8%E7%9A%84Key"></script>。
4、通过 AJAX 获取后端返回的坐标列表,在地图实例上循环调用 new AMap.Marker({position: [lng, lat]}) 添加标记点。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










