最近在用腾讯地图,遇到了一点小问题,根据用户输入的地点确定该用户的经纬度,百度提供的经纬度是其特有的一套,跟google和腾讯的不太一样,于是就牵涉到了经纬度转换的问题,在网上找了很多资料,引入如下:
方法1:使用代码进行转换<存在的问题:转换之后误差大,基本不可用>
public
static
void
Convert_BD09_To_GCJ02(
double
lat,
double
lng) {
double
x_pi = Math.
PI
* 3000.0 / 180.0;
double
x = lng - 0.0065, y = lat - 0.006;
double
z = Math. sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
double
theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
lng = z * Math. cos(theta );
lat = z * Math. sin(theta );
System.
out
.println(lng);
System.
out
.println(lat);
}
方法2:
该网站提供转换服务,坐标较为准确,可用,后台调用没有仔细研究
方法3:
使用腾讯地图,详见1.html
直接调用的地址<百度地图转为腾讯地图>,points=经纬度,传入百度的即可:
坐标查询地址:
总结:
由于
腾讯的经纬度和google经纬度是同一个坐标系,百度经纬度为自己的体系,目前网上搜索到的算法代码,都不是十分精确,所以建议使用地图开发方提供的Api进行转换.