PHP版本实现火星,高德地图和百度地图坐标转换
发布:smiling 来源: PHP粉丝网 添加日期:2016-01-01 15:06:38 浏览: 评论:0
作开发的朋友都知道百度地址或其它的google地址及火星,高德地图它们的坐标值都是不一样的,如果我们希望从高德地图转换到百度地址是需要转换坐标的否则就不准了,下面来看一个高德地图和百度地图坐标转换php程序。
高德地图和百度地图坐标转换php程序,代码如下:
- <?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; //phpfensi.com
- }
- //测试
- $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,百度坐标系。
Tags: PHP高德 PHP火星 PHP地图
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)