现在几乎每一个App都会收集用户位置信息,App得到的坐标大多是通过高德地图等SDK获取的,当使用这些坐标进行webGIS可视化的时候会发现各种偏离状况,坐标不对,叠加错位。这是由于不同SDK获取到的坐标可能属于不同坐标系,想要针对不同地图的地图将手中的坐标数据转换成相吻合的数据,可以采用coordtransform库来解决这一问题。
首先,了解现如今互联网坐标系的现状。
1. 地球坐标 (WGS84)
- 国际标准,从GPS设备中取出的数据的坐标系
- 国际地图提供商使用的坐标系
2. 火星坐标 (GCJ-02) 也叫国测局坐标系
- 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系
- 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。
3. 百度坐标 (BD-09)
- 百度标准,百度 SDK,百度地图,Geocoding 使用
- 百度在火星坐标上来了个二次加密
其次,设备与坐标系对应关系
1. 从设备获取经纬度(GPS)坐标
- 百度SDK,可以获取百度坐标(bd09,默认)或者火星坐标(GCJ02)
- IOS原生定位库,可以获取WGS84坐标
- 高德SDK,可以获取GCJ02坐标
2. 互联网在线地图使用的坐标系