首页 > android > android上谷歌地图、百度地图、高德地图(MapABC)粗略横向对比

android上谷歌地图、百度地图、高德地图(MapABC)粗略横向对比

序:一直以来我都有在android上搞搞LBS方面的应用,以前用的地图和定位模块都是android原生的谷歌地图api+自己拍脑袋的优化,但是定位精度、定位速度、图层加载速度等问题一直没能够很好解决。前段时间一个师兄说可以试试百度地图等其它的地图,速度应该会快一点。无耐搜不到这方面的对比资料,这几天也一直忙于各种事,没做测试。今天下午发现明天只有两门神课,然后就周末了,就随便写了一下,欢迎各位指出问题,交流学习~

本次测试主要分几个方面吧,定位速度等效果(简称效果)及地图载入速度,易用性,扩展性。

定位速度、地图加载速度

这个没办法很形象的表示出来,就说说我的感受吧,你也可以在文章最后下载APK试下。

环境:整个过程用的是wifi,位置是室内,海拔6楼(顶层是7楼。。。),距离阳台3m左右。

谷歌原生定位API

这里的的API包括:LocationManager、Location、GeoPoint、MapActivity、MapController、MapView

定位我使用的是GPS+network+基站定位,经过拍脑袋的优化吧,目测获取到坐标大概1秒左右吧,位置偏差初步估算有2公里左右,此时起作用的应该是网络定位或者基站定位。

地图加载速度方面,真心感觉谷歌地图慢,放大缩小都要一段时间才能渲染好的。

百度定位API

这里需要用到百度的api有: BMapManager、GeoPoint、LocationListener、MKGeneralListener、MKLocationManager、MapActivity、MapController、MapView,然后Location是系统自身的Location。

代码是按照API附带的文档写的,完全没做修改,结果是:目测定位速度0.5秒内(总之一进去就定好了),然后就是位置偏差,把地图放到最大来看,估计误差不超过50m,理论上应该是GPS定位的,但一直看不到状态栏上的定位图标在闪。。。好吧,我不知道它是怎么做到的。

地图加载很快,几乎达到秒加载。

MapABC定位API

这里用到MapABC的API有: GeoPoint、LocationManagerProxy、LocationProviderProxy、MapActivity、MapController、MapView,用了系统本身的API有:Location、LocationListener。

代码也是直接按照使用指南写的,没做任何修改,结果是:一进去定位大概用了1.x秒吧,感觉比谷歌的慢了一点,误差目测大概是100m左右吧,从地图上看应该刚好是定到我前面一栋楼的前面去了。

地图加载速度挺快的,比谷歌地图好,略慢于百度地图(可能它的动画影响视觉感觉)。

 

数据对比:

小结:从上图直观可以看出,谷歌原本的API优势不大(当然懂优化的大神无视这句话),无论定位速度、定位精度、地图加载速度都不如其他两者;MapABC和百度地图其实距离不大,当然这一回合算是百度优一点了吧~

 

易用性

下面两张图分别是百度、MapABC两者的API一览(谷歌的要找出所有比较麻烦,就懒一回吧~)

百度API(上图)

MapABC api(上图)

从上面两张图,结合一下以前用谷歌API对android地图、定位的开发经验,可以发现三者主要的API基本上是一样的,如MapView、GeoPoint、Overlay等这些类,连名字都是一样的,不同的应该只是它们各自加入了一些自己的东西而已,使用起来完全是一样的。因此在兼容性方面是没太大问题的, 完全可以直接用百度或MapABC的地图替换调谷歌地图。

另外,百度和MapABC他们都把定位相关的功能封装起来了,并做了相应的优化,使用起来比原生自己管理LocationManager更加方便,这些类分别是:MKLocationManager(通过BMapManager去获得实例)和LocationManagerProxy。

小结:在这一回合,谷歌原生的东西还是没有太大的优势,起码定位方面需要自己去管理,高手还好,像本人这样的菜鸟,就会弄得一团糟而定位效果极差。

 

扩展性

在这个方面,主要是看地图和三个提供商的东西的整合方便性吧。例如,谷歌地图和它的WebService的整合,或者是导航路线等方面。

三者的Overlay大同小异,因此在这方面它们能做的东西是一样的,都能够在地图上画各种你想要画的东西,这些要画的东西不管从哪里得来的。

谷歌地图

我用过它的Place API,完全是按照它的英文文档,发get请求、解析JSON等操作去获得数据,并显示在地图上。这个简便还是挺简便的。它还有另外的一些WebService,用法都是差不多。倒是没离线地图这个就感觉有点不给力了。其它东西我倒没怎么用过,没发言权。。。

百度地图

从官方的开发文档中可以看到,它除了有一般的ItemizedOverlay等之外,还有什么PoiOverlay(本地搜索覆盖物)、RouteOverlay(驾车路线覆盖物)、TransitOverlay(换乘路线覆盖物)这些Overlay;还有搜索服务、POI搜索、公交线路、离线地图等功能。

个人感觉离线地图才是最实在的。怎么说呢,国内嘛,网络慢、流量费贵,到一些不认得路的地方,开一个地图,随便都能用那么个10+M的流量,而且如果网速慢,就会有这样一种情景:你站在马路边,傻傻地看着屏幕,等它加载地图,指引你下一步该怎么走。想起都觉得囧了。所以下一次有空就试下百度这个离线地图如何。

MapABC

MapABC的开发文档一开始就提到了一个栅格化地图的东西,看它给出的显示效果就感觉没胃口,就没试了,直接跳过,使用矢量地图。

文档中提到的其它功能有:指南针、自动定位、本地搜索覆盖物(PoiOverlay)、驾车、公交路线覆盖物(RouteOverlay)、PoiSearch。跟百度的差不多,就少了那么个离线地图~~

小结:三者在扩展性方面都还是挺不错了,但毕竟谷歌是国外的,在一些“国情化”的东西上肯定就被比下去的了,也有可能是我用过的东西不多,所以相对谷歌的扩展服务写得少一点吧。还是那句话,个人比较感兴趣的是离线地图~

 

总结

从这几个方面看,原生的谷歌api确实不如百度和MapABC它们这些改良过的,这也是理所当然的。如果开发一个受众大多是国内用户的软件,用百度或MapABC等可能好一点;但如果要考虑到国际化的东西了,感觉还是谷歌靠谱一点,至于怕不怕它以后对我们这些开发者也收费,就看着办吧~

就百度和MapABC来说,个人更倾向于使用百度的,毕竟定位速度、精度、离线地图等摆在那嘛。

 

就这么多了,写这些纯粹是给自己写一些学习笔记,同时给有需要的童鞋一些参考吧。源码很乱,就不贴出来了,有需要的童鞋直接联系我交流交流吧,邮箱:yong1514@gmail.com

 

最后附上几个连接:

百度地图API地址:http://dev.baidu.com/wiki/static/index.htm

MapABC地址:http://code.mapabc.com/

APK下载:TestLBS

 

转载请注明出处:http://www.gzayong.info/ws/?p=464

分类: android 标签:
  1. 楼主请加我QQ,想请教LBS开发问题,多谢!

  2. 谷歌的加载速度和位置偏移都是因为天朝的原因。

    • 这个确实,也没办法,所以只能看情况而使用咯