向玉云+高爽+陳云紅+黃嘉成+許新華



摘 要:隨著網絡日益發展及城市道路日益完善,地圖服務呈現多樣化趨勢,地圖開發產業得到長足發展,市場涌現出大量各有所長的地圖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 的根目錄下??截愅瓿珊蟮墓こ棠夸洠ㄒ?D 地圖包為例)如圖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