腾讯地图和百度地图的相互转换

本文提供了一种将百度地图BD09坐标与腾讯地图GCJ02坐标相互转换的PHP方法。通过数学公式实现了坐标之间的精确转换,适用于需要在两种地图系统间进行坐标变换的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于百度和腾讯地图坐标转换的问题,网上大多给的是JS实现的,而JS又是异步实现的,无法返回值,在有些应用场景下不好使用,这里我从腾讯论坛上找到了一个PHP转换的方法,贴出来分享给大家。经测试十分有效!

/**
* 中国正常GCJ02坐标---->百度地图BD09坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
*/
function Convert_GCJ02_To_BD09($lat,$lng){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lng;
        $y = $lat;
        $z =sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi);
        $lng = $z * cos($theta) + 0.0065;
        $lat = $z * sin($theta) + 0.006;
        return array('lng'=>$lng,'lat'=>$lat);
}

/**
* 百度地图BD09坐标---->中国正常GCJ02坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
* @return array();
*/
function Convert_BD09_To_GCJ02($lat,$lng){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lng - 0.0065;
        $y = $lat - 0.006;
        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
        $lng = $z * cos($theta);
        $lat = $z * sin($theta);
        return array('lng'=>$lng,'lat'=>$lat);
}


### 腾讯地图坐标转换百度地图坐标的实现方法 为了将腾讯地图坐标(基于 GCJ-02 协议)转换百度地图坐标(基于 BD-09 协议),可以通过以下两种主要途径来完成: #### 1. 使用公式手动转换 根据已知的信息,百度地图在其内部实现了对 GCJ-02 的进一步加密处理形成 BD-09 坐标体系[^3]。因此可以从腾讯地图的原始 GCJ-02 数据出发,应用特定算法将其映射至 BD-09。 以下是 PHP 实现的一个例子用于展示该过程: ```php function TxToBd($lng, $lat){ $x_pi = 3.14159265358979324 * 3000.0 / 180.0; // 将腾讯坐标调整回未偏移状态 $x = $lng - 0.0065; $y = $lat - 0.006; // 计算中间变量 z theta $z = sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi); $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi); // 得到最终的百度坐标 $bd_lng = $z * cos($theta) + 0.0065; $bd_lat = $z * sin($theta) + 0.006; return ['lng' => $bd_lng, 'lat' => $bd_lat]; } ``` 此函数接受两个参数 `$lng` `$lat` 表示腾讯地图中的经度纬度,并返回对应的百度地图坐标[^4]。 #### 2. 利用在线API服务 除了自行编写代码外,还可以借助第三方提供的 API 接口来进行更精确的转换操作。例如高德开放平台提供了专门针对不同地图服务商之间相互转换的服务端接口[^2]。开发者只需按照文档说明调用相应 URL 并附带必要参数即可轻松获取目标位置的新坐标表示形式而无需关心底层具体逻辑细节。 需要注意的是,在实际开发过程中可能还会遇到一些误差现象,这主要是因为各家公司所采用的具体模型略有差异所致。 --- ### 注意事项 当涉及到地理信息系统(GIS)领域内的敏感数据时,请务必遵循国家法律法规以及相关行业规定,确保信息安全个人隐私得到妥善保护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值