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);
}
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));