可商用的免费地图
- 由于高德、百度、腾讯地图商业授权开始正式收费,所以找了下“目前”还是免费的地图:天地图。
天地图开发者选择
天地的 API 服务调用是进行日配额管理的。
个人开发者无需授权,如果只是自用使用个人开发者足以。
企业开发者需要填写企业信息(营业执照注册号、公司名称),并上传营业执照(盖了企业公章的),而后由天地图审核,审核期间可以进行地图调试。
事业单位开发者,另一种企业开发者,但额度大大增加,注册流程跟企业开发者基本一致。(给事业单位做项目的时候建议让事业单位去申请账户)
注意事项:
- 日服务调用超量会暂时拒绝访问,次日自动开启;
- 如果服务调用过程中存在数据爬取或者下载行为,服务调用会被自动拒绝;
不同地图的坐标系区别
因为国内对地理坐标有特殊的政策,所有电子地图必须对位置做偏移处理,这导致了从底层接口得到的经纬度坐标展示在地图上会有偏移。这种偏移不是线性的,不能简单地通过加减某个值来校正,并且不同的地图提供商采用的算法也不一样,例如百度地图和高德地图就采用了不同的偏移方式。更详细的信息可以阅读下文的关于坐标系。
关于坐标系
我们通常用经纬度来表示一个地理位置,但是由于一些原因,我们从不同渠道得到的经纬度信息可能并不是在同一个坐标系下。
- 高德地图、腾讯地图以及谷歌中国区地图使用的是 GCJ-02 坐标系。
- 百度地图使用的是 BD-09 坐标系。
- 天地图使用的是 CGCS2000(基本等同于 WGS-84)。
- 底层接口(HTML5 Geolocation 或 ios、安卓 API)通过 GPS 设备获取的坐标使用的是 WGS-84 坐标系。
注:不同的坐标系之间可能有几十到几百米的偏移,所以在开发基于地图的产品,或者做地理数据可视化时,我们需要修正不同坐标系之间的偏差。
WGS-84 - 世界大地测量系统 WGS-84(World Geodetic System, WGS)是使用最广泛的坐标系,也是世界通用的坐标系,GPS 设备得到的经纬度就是在 WGS84 坐标系下的经纬度。通常通过底层接口得到的定位信息都是 WGS84 坐标系。
CGCS2000 - 国家大地坐标系,CGCS2000 与 WGS84 的基本定义是一致的,采用的参考椭球非常相近,椭球常数中仅扁率有细微差别,虽然会造成同一点在两个坐标系中的值有微小差异,但是,在当前测量精度水平下这种微小差值是可以忽略的,因此,可以认为 CGCS2000 和 WGS84 是相同的,在坐标系的实现精度范围内两种坐标系下的坐标是一致的。
GCJ-02 - 国测局坐标 GCJ-02(G-Guojia 国家,C-Cehui 测绘,J-Ju 局),又被称为火星坐标系,是一种基于 WGS-84 制定的大地测量系统,由中国国测局制定。此坐标系所采用的混淆算法会在经纬度中加入随机的偏移。
国家规定,中国大陆所有公开地理数据都需要至少用 GCJ-02 进行加密,也就是说我们从国内公司的产品中得到的数据,一定是经过了加密的。绝大部分国内互联网地图提供商都是使用 GCJ-02 坐标系,包括高德地图,谷歌地图中国区等。
- BD-09 - 百度坐标系 BD-09(Baidu, BD)是百度地图使用的地理坐标系,其在 GCJ-02 上多增加了一次变换,用来保护用户隐私。从百度产品中得到的坐标都是 BD-09 坐标系。

同一坐标,在不同坐标系下的点在百度地图上会有偏移
相互转换
可以通过 gcoord 进行转换。
GCJ-02 和 BD-09 都是用来对地理数据进行加密的,所以也不会公开逆向转换的方法。理论上,GCJ-02 的加密过程是不可逆的,但是可以通过一些方法来逼近接原始坐标,并且这种方式的精度很高。gcoord 使用的纠偏方式达到了厘米级的精度,能满足绝大多数情况。
- 参考:地理坐标系