Heim  >  Artikel  >  php教程  >  PHP版本实现火星,高德地图和百度地图坐标转换

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

WBOY
WBOYOriginal
2016-06-08 17:20:171728Durchsuche

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

<script>ec(2);</script>

高德地图和百度地图坐标转换php程序

 代码如下 复制代码


    //GCJ-02(火星,高德) 坐标转换成 BD-09(百度) 坐标
      //@param bd_lon 百度经度
    //@param bd_lat 百度纬度
    function bd_encrypt($gg_lon,$gg_lat)
    {
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $gg_lon;
        $y = $gg_lat;
        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
        $data['bd_lon'] = $z * cos($theta) + 0.0065;
        $data['bd_lat'] = $z * sin($theta) + 0.006;
        return $data;
    }
    //BD-09(百度) 坐标转换成  GCJ-02(火星,高德) 坐标
      //@param bd_lon 百度经度
    //@param bd_lat 百度纬度
    function bd_decrypt($bd_lon,$bd_lat)
    {
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $bd_lon - 0.0065;
        $y = $bd_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);
        $data['gg_lon'] = $z * cos($theta);
        $data['gg_lat'] = $z * sin($theta);
        return $data;
    }
    //测试
    $bd = bd_encrypt(108.947903,34.231966);
    //输出:array(2) { ["bd_lon"]=> float(108.954466795) ["bd_lat"]=> float(34.2376965936) }
    $gg = bd_decrypt(108.95434,34.238235);
    //输出:array(2) { ["gg_lon"]=> float(108.947903625) ["gg_lat"]=> float(34.2319662425) }
?> 

坐标解释:

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn