关于 GCJ-02 和 BD-09 ,请参考 http://developer.baidu.com/map/question.htm#qa0043 。
算法代码如下,其中 bd_encrypt
将 GCJ-02 坐标转换成 BD-09 坐标, bd_decrypt
反之。
03 | const double x_pi = 3.14159265358979324 * 3000.0 / 180.0; |
05 | void bd_encrypt( double gg_lat, double gg_lon, double &bd_lat, double &bd_lon) |
07 | double x = gg_lon, y = gg_lat; |
08 | double z = sqrt (x * x + y * y) + 0.00002 * sin (y * x_pi); |
09 | double theta = atan2 (y, x) + 0.000003 * cos (x * x_pi); |
10 | bd_lon = z * cos (theta) + 0.0065; |
11 | bd_lat = z * sin (theta) + 0.006; |
14 | void bd_decrypt( double bd_lat, double bd_lon, double &gg_lat, double &gg_lon) |
16 | double x = bd_lon - 0.0065, y = bd_lat - 0.006; |
17 | double z = sqrt (x * x + y * y) - 0.00002 * sin (y * x_pi); |
18 | double theta = atan2 (y, x) - 0.000003 * cos (x * x_pi); |
19 | gg_lon = z * cos (theta); |
20 | gg_lat = z * sin (theta); |
需要php版本的可以自己对照着写一下,很简单的!