# 国内各地图API坐标系统比较


## 地球坐标与火星坐标

在开始这个题目之前，先给大家再次扫扫盲，扫的不是坐标系统的盲，而是我们国家所使用的坐标系统。大家都知道，美国GPS使用的是WGS84的坐标系统，以经纬度的形式来表示地球平面上的某一个位置，这应该是国际共识。但在我国，出于国家安全考虑，国内所有导航电子地图必须使用国家测绘局制定的加密坐标系统，即将一个真实的经纬度坐标加密成一个不正确的经纬度坐标，我们在业内将前者称之为地球坐标，后者称之为火星坐标，具体的说明可以参看百度百科中关于[火星坐标系统](http://baike.baidu.com/view/3163334.html)的解释(文中的两段还是对我原文的摘录)。

所以，本文所要讨论的坐标系统，是关于地球坐标和火星坐标的事情。以前使用Google Maps API开发习惯了，就觉得国外用地球坐标国内用火星坐标是共识，但由于Google服务常常被block的因素，加上还没取得所谓的审图号，所以改用国内地图API，结果问题来了，并不是所有的地图API都采用火星坐标的。我用了一个下午的时间写了个API示例，将地球坐标和火星坐标标注到地图上去对比，具体大家可以访问以下网页自行查看差别：

[http://rovertang.com/labs/map-compare/](http://rovertang.com/labs/map-compare/)

## 地图 API 坐标系比较

结论是：

| API           | 坐标系    |
|---------------|--------|
| 百度地图API       | 百度坐标   |
| 腾讯搜搜地图API     | 火星坐标   |
| 搜狐搜狗地图API     | 搜狗坐标*  |
| 阿里云地图API      | 火星坐标   |
| 图吧MapBar地图API | 图吧坐标   |
| 高德MapABC地图API | 火星坐标   |
| 灵图51ditu地图API | 火星坐标   |

注1：百度地图使用百度坐标，支持从地球坐标和火星坐标导入成百度坐标，但无法导出。并且批量坐标转换一次只能转换20个(待验证)。

注2：搜狗地图支持直接显示地球坐标，支持地球坐标、火星坐标、百度坐标导入成搜狗坐标，同样，搜狗坐标也无法导出。

个人认为：采用自家坐标体系，而不采用国内通用的火星坐标体系，实在是自寻短处。当然，百度是因为做的足够大、足够好，所以很霸道，也为以后一统天下而不让别人瓜分之而做准备吧。搜狗虽然用自家坐标体系，但能将地球坐标直接导入，此举也属唯一。而图吧地图不知道学什么加密方式，以前用地球坐标用的好好的，现在用图吧自己的坐标，难道是因为给百度做过所以也来了这么一招？或者沿用百度？不得而知。

本文的目的在于：做地图开发的时候，不希望被一家地图API迁就，所以采用火星坐标是正确的选择，希望本文能够对选择使用谁家API的开发者提供一点帮助吧。就我个人而言，我绝不会使用非火星坐标系统的地图API，虽然百度地图API很好很强大确实很吸引我。

## 开发中的其他发现

在做这几个样例的过程中，也同大家分享几点个人感受：

1、MapBar和MapABC是需要绑定网站域名的。Google Maps API v3开始就不使用了key了，所以也希望更多的地图API不要限制于地图API key(手机开发或地图接口应用倒是可以用key来关联一下)。

2、兼容性仍然是个大问题。MapBar API在IE6下正常，Chrome和FireFox下有问题。MapABC我也调试了很久，最后在Chrome下还是有点问题。当然，还有更糟糕的地图API(易图通的myemap在Chrome下不显示地图，瑞图的365地图网在Chrome下错位)，我就没有去尝试了。

3、发现51ditu的地图级别，是越详细数字越小，和其他地图API相反，同时，初始化地图的时候若输入一个超过层级的数字，则地图不显示，放大缩小不可操作，不知道这算不算是一个bug。

4、在移动设备上的兼容性未做测试，若把这一参数加上，也许又可以刷掉几个地图API。

虽然做了这些比较，但个人还未能完全拿定主意用哪个API来开发，不知道大家倾向于哪一家地图API呢？

本文飞书文档：[国内各地图API坐标系统比较](https://rovertang.feishu.cn/docx/doxcnkG3T7oRSm7uQ9Qx1xlqhDe)


---

> 作者: [RoverTang](https://rovertang.com)  
> URL: https://rovertang.com/map/china-map-api-coordinates/  

