php百度坐标转腾讯坐标,火星坐标系、百度坐标系、腾讯坐标系的相互转换

本文介绍了如何使用JavaScript实现火星坐标系(GCJ-02)与百度坐标系(BD-09)之间的转换,包括从GCJ-02到BD-09的转换函数和从BD-09回GCJ-02的逆转换,同时提供了坐标系间的转换实例。
摘要由CSDN通过智能技术生成

/**

* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标

*

* @param gg_lat

* @param gg_lon

* @return

*/

function gcj02_To_Bd09($gg_lon, $gg_lat) {

$x = $gg_lon;

$y = $gg_lat;

$z = Math.sqrt($x * $x + $y * $y) + 0.00002 * Math.sin($y * pi());

$theta = Math.atan2($y, $x) + 0.000003 * Math.cos($x * pi());

$bd_lon = $z * Math.cos($theta) + 0.0065;

$bd_lat = $z * Math.sin($theta) + 0.006;

return array($bd_lon, $bd_lat);

}

/**

* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 BD-09 坐标转换成GCJ-02 坐标

*

* @param bd_lon

* @param bd_lat

* @return

*/

function bd09_To_Gcj02($bd_lon, $bd_lat) {

$x = $bd_lon - 0.0065;

$y = $bd_lat - 0.006;

$z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * pi());

$theta = atan2($y, $x) - 0.000003 * cos($x * pi());

$gg_lon = $z * cos($theta);

$gg_lat = $z * sin($theta);

return array($gg_lon, $gg_lat);

}

function coordinate_switch($a,$b){//百度转腾讯坐标转换

$x = (double)$b - 0.0065;

$y = (double)$a - 0.006;

$x_pi = 3.14159265358979324;

$z = sqrt($x * $x+$y * $y) - 0.00002 * sin($y * $x_pi);

$theta = atan2($y,$x) - 0.000003 * cos($x*$x_pi);

$gb = number_format($z * cos($theta),15);

$ga = number_format($z * sin($theta),15);

return ['Latitude'=>$ga,'Longitude'=>$gb];

}

function coordinate_switchf($a,$b){//腾讯转百度坐标转换

$x = (double)$b ;

$y = (double)$a;

$x_pi = 3.14159265358979324;

$z = sqrt($x * $x+$y * $y) + 0.00002 * sin($y * $x_pi);

$theta = atan2($y,$x) + 0.000003 * cos($x*$x_pi);

$gb = number_format($z * cos($theta) + 0.0065,6);

$ga = number_format($z * sin($theta) + 0.006,6);

return ['Latitude'=>$ga,'Longitude'=>$gb];

}

// // 113.139278,23.112388

$bd_lon = 23.112388;

$bd_lat = 113.139278;

// print_r(bd09_To_Gcj02($bd_lon, $bd_lat));

print_r(coordinate_switch($bd_lon, $bd_lat));

// // 23.106200,113.132840

$gg_lon = 23.106200;

$gg_lat = 113.132840;

// print_r(gcj02_To_Bd09($gg_lon, $gg_lat));

print_r(coordinate_switchf($gg_lon, $gg_lat));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值