公司的业务涉及到了定位、地图等功能,在了解后发现坐标系也有好几种,这里做个简单总结。
各大坐标系简介及关系
- WGS84(World Geodetic System 1984)
-
国际标准,常用于 GPS 定位。
-
国际地图提供商使用
-
在中国地区,直接使用 WGS84 会有一定的偏移(法律规定)。
- GCJ-02(火星坐标系)
-
中国标准,由中国国家测绘局定义,对 WGS84 坐标加入了偏移。
-
高德地图、腾讯地图等国内地图服务使用 GCJ-02 坐标系。
- BD-09(百度坐标系)
-
在 GCJ-02 的基础上再次加密偏移得到的。
-
仅百度地图使用
坐标系之间的转换
转换关系:WGS84 -> GCJ-02 -> BD-09
叠甲:转换函数都是问 AI 或者网上复制的,并不是我原创的。
因此没必要再复制一遍,不太尊重原创,这里给出代码的地址:https://github.com/wandergis/coordtransform/blob/master/index.js
在uniapp中的应用
uniapp 官方提供了 API 获取地理位置,uni.getLocation()
,默认是 WGS84 坐标,如果需需要 GCJ-02 坐标,修改 type 参数即可,但需要配置SDK。
注意:uniapp 新版本已经取消对百度地图的支持。
简单使用:
uni.getLocation({type: 'wgs84',success(res) {const gcj02Coords = wgs84ToGcj02(res.longitude, res.latitude);}
});
参考
坐标转换工具模块:https://github.com/wandergis/coordtransform
在线查询经纬度
-
http://www.gpsspg.com/maps.htm
-
https://lbs.qq.com/tool/getpoint/index.html
-
https://lbs.amap.com/console/show/picker
-
http://api.map.baidu.com/lbsapi/getpoint/index.html