地球坐标系和火星坐标系

背景

  • 最近在和前端合作开发一个小程序LBS打卡的功能,客户方给了他们在全国的门店的地址和经纬度信息,我直接将数据导入mongo中,然后给前端返回门店经纬度在腾讯地图上标记出来。

  • 而用户在打卡的时候,前端需要把用户当前位置的经纬度传到后台做范围匹配。然后就发现一个问题,小程序端用户定位是没有问题的,但是查询不到用户周围的门店信息。我反复确定了用户所在的位置附近200m内是有门店,就怀疑是前端上传的经纬度是有问题的,于是通过百度经纬度工具反查地址,发现和用户实际所在位置偏差很多。

百度拾取坐标系统

地球坐标系,火星坐标系和百度坐标系

经过查阅得知,目前国内主流的坐标系有三种,地球坐标系,火星坐标系和百度坐标系。

  • 地球坐标系,WGS84坐标系。
    国际上通用的坐标系,比如GPS芯片或者我国的北斗芯片。

  • 火星坐标系,GCJ02坐标系。
    经WGS84加密之后的坐标系。国内大部分导航系统采用的坐标系都是GCj02坐标系或者在GCJ02基础上修改而来。

百度坐标系,BD09坐标系。
GCJ02加密后的坐标系。

解决问题

了解到有多种坐标系之后,我就开始怀疑是小程序获取到的用户当前位置的坐标系和客户给的门店坐标系不是一致的,经过询问得知,小程序默认获取到的经纬度采用的是WGS84坐标系,而客户给我的数据是通过高德地图API转化而来,采用的是GCJ02坐标系。

之后的问题就简单了,前端统一的把WGS坐标系转为GCJ02坐标系即可。

好用的工具

坐标系转换
坐标系转换Java版本
地球坐标系转换-在线工具
在线经纬度查询工具

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容