使用百度地图API进行坐标系转换
最近在做移动APP的定位功能的时候发现系统GPS获取的位置信息再从百度地图API获取的实际地址总是有误差,偏离了好几个街道,但百度地图本身没这个问题。在网上查找一番发现了地图的坐标系一说,下面简单介绍一下主流的坐标系:
1.GCJ-02 俗称火星坐标系,由中国国家测绘局制订的地理信息系统的坐标系统。一般中国官方发布的地图上标注的经纬度都是这种坐标系的,与实际经纬度有偏差。
2.WGS84:World Geodetic System 1984,俗称地球坐标系,是为GPS全球定位系统使用而建立的坐标系统。一般手持设备(比如手机)从GPS卫星获取的坐标系就是这个坐标系。google地图、soso地图、aliyun地图、mapabc地图和amap地图所用此坐标
3.墨卡托(Mercator)坐标系,是由荷兰地图学家墨卡托(Mercator)在1569年拟定,假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的“墨卡托投影”绘制出的世界地图。
4.BD-09 百度坐标系,百度在GCJ-02要求加密的基础上,又自己对坐标加密了一次。
我们正常使用的时候调用需要根据不同的地图类型进行坐标转换 百度地图提供了这个转换API:
http://developer.baidu.com/map/changeposition.htm
返回:
{ status : 0, result : [ { x : 114.23074871003, y : 29.579084787993 }, { x : 114.23075628327, y : 29.579081090996 } ] }
在根据返回的坐标调用百度地图的API 就能返回准确的地址了。
百度的API上有段话:
注:本接口支持回调。另外,同一个GPS坐标多次转为百度坐标时,每次转换结果都不完全一样,误差在2米范围内,属于正常误差,不影响正常使用。
呵呵~