PHP版本实现火星,高德地图和百度地图坐标转换

三月 06, 2019 | views
Comments 0

作开发的朋友都知道百度地址或其它的google地址及火星,高德地图它们的坐标值都是不一样的,如果我们希望从高德地图转换到百度地址是需要转换坐标的否则就不准了,下面来看一个高德地图和百度地图坐标转换php程序。

高德地图和百度地图坐标转换php程序,代码如下:

  1. <?php 
  2.     //GCJ-02(火星,高德) 坐标转换成 BD-09(百度) 坐标 
  3.       //@param bd_lon 百度经度 
  4.     //@param bd_lat 百度纬度 
  5.     function bd_encrypt($gg_lon,$gg_lat
  6.     { 
  7.         $x_pi = 3.14159265358979324 * 3000.0 / 180.0; 
  8.         $x = $gg_lon
  9.         $y = $gg_lat
  10.         $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi); 
  11.         $theta = atan2($y$x) - 0.000003 * cos($x * $x_pi); 
  12.         $data['bd_lon'] = $z * cos($theta) + 0.0065; 
  13.         $data['bd_lat'] = $z * sin($theta) + 0.006; 
  14.         return $data
  15.     } 
  16.     //BD-09(百度) 坐标转换成  GCJ-02(火星,高德) 坐标 
  17.       //@param bd_lon 百度经度 
  18.     //@param bd_lat 百度纬度 
  19.     function bd_decrypt($bd_lon,$bd_lat
  20.     { 
  21.         $x_pi = 3.14159265358979324 * 3000.0 / 180.0; 
  22.         $x = $bd_lon - 0.0065; 
  23.         $y = $bd_lat - 0.006; 
  24.         $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi); 
  25.         $theta = atan2($y$x) - 0.000003 * cos($x * $x_pi); 
  26.         $data['gg_lon'] = $z * cos($theta); 
  27.         $data['gg_lat'] = $z * sin($theta); 
  28.         return $data//phpfensi.com 
  29.     } 
  30.     //测试 
  31.     $bd = bd_encrypt(108.947903,34.231966); 
  32.     //输出:array(2) { ["bd_lon"]=> float(108.954466795) ["bd_lat"]=> float(34.2376965936) } 
  33.     $gg = bd_decrypt(108.95434,34.238235); 
  34.     //输出:array(2) { ["gg_lon"]=> float(108.947903625) ["gg_lat"]=> float(34.2319662425) } 
  35. ?>  

坐标解释:

1、GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。谷歌,腾讯,高德都在用这个坐标体系。

2、BD-09,百度坐标系。



zend