百度、腾讯地图坐标系互相转化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* 中国正常GCJ02坐标---->百度地图BD09坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
*/
function Convert_GCJ02_To_BD09($lng,$lat){
let $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
let $x = $lng;
let $y = $lat;
let $z = Math.sqrt($x $x + $y $y) + 0.00002 * Math.sin($y * $x_pi);
let $theta = Math.atan2($y, $x) + 0.000003 * Math.cos($x * $x_pi);
$lng = $z * Math.cos($theta) + 0.0065;
$lat = $z * Math.sin($theta) + 0.006;
return array('lng'=>$lng,'lat'=>$lat);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* 百度地图BD09坐标---->中国正常GCJ02坐标
* 腾讯地图用的也是GCJ02坐标
* @param double $lat 纬度
* @param double $lng 经度
* @return array();
*/
function Convert_BD09_To_GCJ02($lng,$lat){
let $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
let $x = $lng - 0.0065;
let $y = $lat - 0.006;
let $z = Math.sqrt($x $x + $y $y) - 0.00002 * Math.sin($y * $x_pi);
let $theta = Math.atan2($y, $x) - 0.000003 * Math.cos($x * $x_pi);
$lng = $z * Math.cos($theta);
$lat = $z * Math.sin($theta);
return ['lng'=>$lng,'lat'=>$lat];
}