APP下载

百度、高德及Google地图API比较研究

2017-09-29向玉云高爽陈云红黄嘉成许新华

软件导刊 2017年9期

向玉云+高爽+陈云红+黄嘉成+许新华

摘 要:随着网络日益发展及城市道路日益完善,地图服务呈现多样化趋势,地图开发产业得到长足发展,市场涌现出大量各有所长的地图API。利用地图开发商官网提供的资料,结合实际开发经验,将百度地图API、高德地图API、Google Maps API进行了比较研究,以帮助开发者开发出更加优秀的地图导航APP或Web网页,帮助使用者按功能选择地图APP。

关键词:API;百度地图API;高德地图API;Google Maps API

DOI:10.11907/rjdk.171478

中图分类号:TP301 文献标识码:A 文章编号:1672-7800(2017)009-0019-03

Abstract:With the development of network and the city road is increasingly perfect, the map service began to appear its diversification, thus the development of the map industry has been promated.At the same time, a large of map APIs which have their own feature have poured into market.By consulting information provided by the official website and combining with our experience of development, the artical aims to compare Baidu map API,Google Maps API and lbs amap API with each other to help developers develop more excellent application or web which can be used to navigate.

Key Words:API; Baidu map API; Lbs Amap API; Google Maps API

0 引言

API(Application Programming Interface)即應用程序编程接口是预先定义的函数,提供应用程序与开发人员访问例程的能力,无需访问源代码或了解内部工作机制[1]。地图API是一种通过Java等开发语言将地图嵌入到网页或应用程序中的API,这种API提供了大量实用工具用以处理地图,并且可以通过各种服务向地图添加内容[2]。本文对百度地图API、高德地图API以及Google Maps API进行比较研究。

1 三大地图API简介

1.1 百度地图API

官网网址:http://developer.baidu.com/map/

使用条件:对于公众服务类网站是免费的,非商用网站需要申请key,开发者使用时必须保留其logo。

API类型:移动应用版(包含Android版及iOS版)、Web浏览器版。

服务种类:定位、数据检索、基础地图显示、轨迹追踪、数据云检索、距离计算等。

1.2 高德地图API

官网网址:http://lbs.amap.com/

使用条件:开发者需要申请密钥且使用时必须保留其logo。

API类型:Java script版、移动版(iOS/Android/Windows phone/Windows 8)。

服务种类:基础地图显示、室内地图显示、室内定位、POI精准搜索、周边查询、路线规划等。

1.3 Google Maps API

官网网址:https://developers.google.com/

使用条件:开发者需美国法律允许,使用前需要申请密钥,并在开发应用的“法律声明”部分加入 Google Play 服务提供方说明文本。可通过调用 GoogleApiAvailability.getOpenSourceSoftwareLicenseInfo 的方法取得提供方说明文本。

API类型:Web 浏览器版,移动类型(包括Android版和iOS版)并可通过 HTTP Web 服务使用。

服务种类:基础地图、3D建筑、室内平面图和轻型模式、街景图像、自定义标记、信息窗和聚合线等。

2 三大地图API对比

2.1 开发环境及适用平台

(1)API类型方面。三大地图API都拥有JavaScript类型的API。Google拥有7种类型的API,高德拥有5种类型的API[3],百度拥有4种类型的API。

(2)平台适用方面。针对网络平台的适用性,百度地图API和Google Maps API能在Windows、Mac、Linux的所有平台中使用。高德地图API支持大部分主流的网页浏览器,不兼容IE浏览器6.0及以上版本和Firefox浏览器2.0及以上版本。但在移动平台方面,高德地图API显然比Google Maps API以及百度地图API更具优势。特别是它能很好地支持Android、iOS系统。

2.2 地图操控及功能服务

在基础地图显示方面,Google Maps API以7种视图显示效果荣居榜首。百度和高德都支持卫星地图及3D地图。此外,在国产地图API中,只有高德地图API支持英文显示。在对地图的基本操作、显示图层以及服务等方面,高德地图API和百度地图API各领风骚,然而在鼠标运用和各类搜索上,前者明显优于后者 [4]。实时交通查询功能方面,只有高德地图API具有,可谓独占鳌头。endprint

在移动平台上,以Android平台以及iOS平台为例,高德地图API和百度地图API明显要比Google Maps API的操作性更强、功能更完善。此外,三者当中,只有高德地图API支持矢量地图显示。

2.3 用户群体比较

2.3.1 高德地图API

正如高德官网所标榜的“各行各业都在用高德”那樣,如今高德地图API已渗透到游戏、社交、电商、出行、O2O、运动、智能硬件等行业,下面简单列举高德地图API在各行业的合作案例:①游戏:阴阳师、球球大作战、地球入侵、城市精灵Go;②社交:陌陌、微博、in、钉钉、映客;③电商:亚马逊、淘宝、天猫、咸鱼;④出行:滴滴出行、首汽约车、神州专车、易到用车、曹操专车、摩拜单车、ofo共享单车;⑤O2O:饿了么、美团外卖、美团、达达;⑥运动:乐动力、Keep、动动、咕咚;⑦智能硬件:大疆、阿巴町智能手表、Sonny Smart-BTrainer。

2.3.2 百度地图API

与高德地图API相比,百度地图API渗透的行业也多达7个,有共享出行、LBS游戏、上门服务、物流配送、房产行业及智慧交通等,下面介绍百度地图API在各领域的合作案例:①共享出行:小鸣单车、骑呗单车、智享单车、7号店单车、奇奇出行;② LBS游戏合作厂商:网易游戏、趣满天下;③上门服务:e袋洗、爱鲜蜂、点到、一米鲜、小马管家、百度外卖;④物流配送:百度外卖、货拉拉、顺丰速运、圆通速递;⑤房产行业:搜房网、小猪短租、百姓网;⑥智慧交通合作案例:公安部交通管理科学研究所春运平安播报、中国交通运输部出行云平台、江苏省交通运输厅全要素合作、河南省交通运输厅十一联合发布;⑦商业地理:龙湖地产、万科、悦荟万科、IFS国际金融中心、McDonald、万达电影、分众传媒、宁波市规划设计研究院智能交通科技出行。

在共享单车模块中,百度地图API推出鹰眼轨迹SDK来帮助开发者展示与搜索附近可用单车。此外,百度地图API采用Mavp大数据可视化库以及百度慧眼大数据服务,辅助开发者对外展示产品数据,分析城市人口,指导车辆投放,勾勒用户画像,分析客流来源去向。

2.3.3 Google Maps API

和高德地图API以及百度地图API相比,Google Maps API也渗透6个行业,如出行、健身、物流风险评估、旅游住宿、饮食和摄影等方面。下面介绍Google Maps API在各行业的合作案例:①出行:CitiBike、Dash Harley Davidson、CDOT;②健身:lcon Fitness、Runtastic、Walk Score;③物流风险评估:Allstate;④旅游住宿:Airbnb、Expedia、The New York Time;⑤饮食:FoodSpotting、-Eleven;⑥摄影:Sun Surveryor。

2.4 功能结构对比

地图API服务功能的多少、功能的便捷性以及用户界面的人性化程度等因素左右用户的体验感,在地图API功能评价中占据重要地位。

功能结构方面,百度地图API、高德地图API和Google Maps API均包含基础地图显示类、控件类、服务类、基础类、街景类,基本满足用户和开发者需求。

三大地图不同之处:高德地图API与百度地图API包括云图类,分别为高德云图(AMap.CloudDataI.Layer云数据图层)以及百度云图,都是在LBS云服务基础上,允许开发者将存储在LBS云数据管理平台中的数据作为一个图层叠加到地图上,同时能将经过一定条件删选出来的数据作为一个图层加载到地图上,高德AMap.CoudDataSearch云数据检索服务,为开发者提供对已有数据的空白格建立检索服务[5]。

2.5 性能分析

本文以LoadRunner为测试工具,并发用户数为1 000,对百度地图API和高德地图API从加载地图的平均事务响应时间、平均可用物理内存数以及平均吞吐量等方面进行测试,测试结果如表1所示(由于Google Maps API需要浏览国外网站,此处不进行分析)。其中,事务响应时间是用户请求的开始时间和服务器响应请求并返回内容到客户端所用的时间差值;吞吐量指在一次性能测试过程中网络传输的数据量总和;平均可用物理内存越高,说明加载该地图所耗用的物理内存数越少。

测试结果显示,在平均事务响应时间方面,百度地图API极具优势,其平均事务响应时间不超过20ms,相比而言,高德地图API在此方面明显处于下风,其平均事务响应时间达到40ms,几乎是百度地图API的两倍;在平均可用物理内存方面,高德地图API的平均可用物理内存处于1 440~1 460MB之间,而百度地图API平均可用物理内存处于1 480~1 500MB之间,在平均可用物理内存上,百度地图API略胜一筹;在平均吞吐量方面,百度地图API与高德地图API两者不相上下,均在600 000字节/s左右[5]。

3 地图API用法及关键代码

三大地图API使用方法大致相同。下面以高德地图API的使用方法为例对三大地图API的用法以及关键代码进行说明。

3.1 申请Key

获取Map API密钥:

(1)在开发者电脑上获取MD5指纹。在eclipse中打开“Window”→“preferences”命令,在对话框中选择“Android”→“Build”,在右侧Build面板中查看MD5指纹,如图1所示。

(2)向高德地图申请开发者key。输入网址:http://lbs.amap.com/console/key获取Key,如图2所示。

3.2 工程配置

3.2.1 下载开发包endprint

高德官网目前给开发者提供了3D和2D地图包,此处以3D地图包为例。从高德官网(http://lbs.amap.com/)下载3D地图开发包和搜索开发包并解压。

(1)3D地圖包解压后得到:3D地图显示包“AMap3DMap.jar ”和文件夹“ armeabi ”。

(2)搜索包解压后得到:“AMap_Search_V2.x.x.jar”。

3.2.2 新建工程

打开eclipse,新建一个Android工程,开发工程中新建“ libs ”文件夹,将地图包、搜索包、“ armeabi ”文件夹一同拷贝到 libs 的根目录下。拷贝完成后的工程目录(以3D 地图包为例)如图3所示。

3.2.3 添加用户key

在工程的“ AndroidManifest.xml ”文件中标签下给value的值赋予用户key,如下所示:

3.2.4 添加用户权限

在新建工程的“ AndroidManifest.xml ”文件中添加用户权限,代码如下:

WRITE_EXTERNAL_STORAGE" />

4 结语

通过对百度地图API、高德地图API、Google Maps API三大地图API的比较以及用法介绍,不难看出,高德地图API对开发者人群的支持面更高,平台适用性也更好。而在功能操作上,Google Maps API拥有多达7种类型的显示视图,给开发者提供了更多选择。另外,网页版地图上百度地图API的平台性更好。综上所述,三大地图API各领风骚。

参考文献:

[1] 百度百科.API [EB/OL]. [2017-2-23].https://wapbaike.baidu.com/item/api/10154?adapt=1&fr=aladdin&bk_share=shoubai&bk_sharefr=lemma#modile.qq.com.

[2] 穆穆.搜狗地图开放API[J].现代广告,2011(2):23.

[3] 刘辉,兰梅,余洋.主流电子地图API的综合评价与分析[J].北京测绘,2015(6):5861.

[4] 360个人图书馆.几大地图API[EB/OL].[2017-2-23]. http://www.360doc.com/content/13/1008/09/3918892_319765453.shtml.

[5] 龙际梦,刘宏建,蔡忠祥,等.主流网络地图应用开发API技术研究[J].北京测绘,2015(3):3-4.endprint