之前做的项目中需要频繁向服务器上传用户的坐标,然后由于之前只使用了定位功能,就直接使用的系统的定位,后来又需要地图就集成了百度地图,然后自然就需要转换坐标,然后这个时候发现一个问题转换了之后和直接系统定位的还是对不上,于是就查了下相关的东西。
首先说一下坐标系的相关知识。
地球坐标(WGS84,国际公认坐标)
火星坐标(GCJ02,国家标准,适用于高德地图)
百度坐标(BD09,百度地图)
其他...
一般来说有以上三个坐标系
WGS84 看介绍就知道了,国际公认。
GCJ02 又是什么鬼呢? 其实这是根据中国的相关规定,为了安全保密,在国际公认的坐标系上做了一次偏移之后得到的坐标系。
BD09 则是在火星的基础上再次偏移得到的坐标系。
然而由于苹果自带的高德地图,我也没深入了解,一直以为使用系统API定位得到的坐标就是火星坐标系的坐标。于是就一脚踩到坑了去 了。
其实地图和定位是两回事,定位所得的坐标只有和地图联系起来才有意义。这样说来使用系统定位得到的坐标不经转换时没有任何意义的,因此如果你使用高德地图,就用高德SDK提供的定位API,如果是百度就用百度SDK提供的定位API,这样你获取的坐标才能和地图上的显示对的上,否则会有很大的偏差。
当你需要相关的坐标系的坐标时,网上有相关的算法进行转换,下面我也贴出了对应的地址。
这里还有个验证的工具坐标检验
网友评论