geo地图坐标格式到底怎么填?别被WGS84和GCJ02坑了

geo地图坐标格式到底怎么填?别被WGS84和GCJ02坑了

内容:

做地图开发或者搞LBS定位的朋友,

肯定都遇到过这种崩溃瞬间。

明明经纬度是对的,

点上去却飘到了海里或者隔壁省。

这真不是你的代码写错了,

大概率是坐标格式搞混了。

今天不扯那些晦涩的理论,

直接说点干巴巴的实战经验。

我当年刚入行那会儿,

也是被这个问题折磨得够呛。

以为只要拿到经纬度就能用,

结果百度地图和高德地图显示的位置,

跟GPS原始数据完全对不上。

后来才搞清楚,

国内地图用的坐标系根本不一样。

最常见的就是WGS84,

这是国际通用的标准,

也是GPS卫星直接返回的数据。

但如果你直接把这个坐标,

扔进高德或者百度地图里,

你会发现位置偏移了几百米。

这是因为国内出于安全考虑,

对原始坐标做了加密处理。

高德、腾讯地图用的是GCJ02,

也就是大家常说的“火星坐标系”。

这个坐标系是在WGS84基础上,

加了一些非线性偏移算法。

所以直接混用肯定不行。

而百度地图更绝,

它用的是BD09坐标系。

这是在GCJ02的基础上,

又进行了一次二次加密。

所以百度坐标和其他两家,

互相转换时还得再绕一圈。

如果你是在做开发,

或者需要批量处理数据,

一定要先确认你的数据源。

是GPS直读?还是从其他平台导出的?

这个geo地图坐标格式如果不统一,

后面全是坑。

我有个做物流的朋友,

之前为了省事,

直接拿GPS原始数据入库。

结果司机在地图上显示的位置,

离实际仓库差了整整两条街。

客户投诉都打爆了电话。

后来他花了两天时间,

写了一个坐标转换工具。

把所有WGS84的数据,

先转成GCJ02,

再根据平台需求转成BD09。

虽然麻烦了点,

但之后再没出过这种低级错误。

还有一种情况,

就是大家常用的Excel表格。

有时候从不同系统导出的数据,

坐标格式看着一样,

其实底层算法不同。

这时候千万别直接复制粘贴,

一定要先核对一下坐标系类型。

如果你只是普通用户,

想在自己的APP里加点标记,

那更要注意这个问题。

很多开源库或者插件,

默认都是WGS84格式。

但你调用的地图SDK,

可能要求GCJ02。

这时候就需要一个转换接口。

网上有很多现成的API,

或者自己写个简单的算法。

虽然听起来有点技术含量,

但其实逻辑很简单,

就是套用一个转换公式。

千万别觉得麻烦就忽略它。

位置差之毫厘,

谬以千里。

特别是在做导航、

外卖配送或者打车软件时,

几米的误差都可能影响体验。

再补充个小技巧,

如果你不确定自己的坐标对不对,

可以找个已知地点实测一下。

比如你家小区门口,

或者某个知名地标。

把坐标填进去,

看看地图显示的位置准不准。

如果不准,

那就说明坐标系没对上。

这时候再回头检查你的数据源,

看看是不是混用了不同标准的坐标。

总之,

处理geo地图坐标格式,

核心就两点:

认清数据源,

选对转换方式。

别偷懒,别侥幸,

否则后期修bug的时间,

比现在花十分钟搞清楚,

要多出十倍不止。

希望这点经验,

能帮正在踩坑的你,

少走点弯路。

毕竟,

位置对了,

心才不累。