董杰 馬宏琳
摘要:百度地圖是國內(nèi)主要的地圖服務(wù)提供商,提供了Web開發(fā)和移動(dòng)開發(fā)等多種開發(fā)SDK,該文以安卓平臺(tái)為基礎(chǔ),進(jìn)行了百度地圖API開發(fā)的技術(shù)研究,對開發(fā)流程和實(shí)現(xiàn)技術(shù)細(xì)節(jié)進(jìn)行了說明,實(shí)現(xiàn)了搜索地點(diǎn),切換視圖,路線規(guī)劃和定位,導(dǎo)航等功能。
關(guān)鍵詞:百度地圖;安卓;API
1背景
隨時(shí)C-IS技術(shù)fGeographical information System GIS)的發(fā)展和應(yīng)用,基于地圖的位置信息服務(wù)成為當(dāng)前計(jì)算機(jī)技術(shù)的研究熱點(diǎn)之一。國內(nèi)有以百度地圖、高德地圖為代表的地圖服務(wù)商,為用戶提供免費(fèi)的地圖位置服務(wù)。其中百度地圖是國內(nèi)處于領(lǐng)先地位的地圖位置服務(wù)商,研究基于其API的各項(xiàng)服務(wù)功能對于相關(guān)應(yīng)用的開發(fā)具有明顯的現(xiàn)實(shí)意義。
百度地圖是百度提供的一項(xiàng)網(wǎng)絡(luò)地圖搜索服務(wù),覆蓋了國內(nèi)近400個(gè)城市、數(shù)千個(gè)區(qū)縣。提供的軟件開發(fā)工具包SDK(Software Development Kit)支持多種開發(fā)方式,包括Web開發(fā)、移動(dòng)開發(fā)、服務(wù)接口等多種形式。移動(dòng)開發(fā)是其主要應(yīng)用場景之一,Android平臺(tái)又在移動(dòng)平臺(tái)中占據(jù)主要地位,據(jù)KantarWoroldpanel公司2017年4月調(diào)查數(shù)據(jù)顯示,中國的Android平臺(tái)市場占有率達(dá)83.4%,iOS平臺(tái)市場占有率為16.2%~1。因此,本文選安卓平臺(tái)作為基礎(chǔ)系統(tǒng)平臺(tái)。
2百度地圖的Android開發(fā)SDK
百度地圖Android SDK是一套基于Android 2.3及以上版本設(shè)備的應(yīng)用程序接口??梢允褂迷撎譙DK開發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用,通過調(diào)用地圖SDK接口,可以訪問百度地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富的地圖類應(yīng)用程序。
通過百度地圖API提供的方法,能夠方便地使用百度移動(dòng)地圖的相關(guān)技術(shù)和信息。百度地圖API主要提供了地圖、定位、鷹眼軌跡、導(dǎo)航、全景等SDK。
3系統(tǒng)設(shè)計(jì)
3.1功能分析
對于Android平臺(tái)的移動(dòng)地圖應(yīng)用,地圖瀏覽、周邊搜索、路徑規(guī)劃、導(dǎo)航、實(shí)時(shí)路況等是常見的功能應(yīng)用。本文選自上述功能進(jìn)行系統(tǒng)設(shè)計(jì),確定主要功能如下。
1)地圖控制:可以對地圖實(shí)現(xiàn)俯視,旋轉(zhuǎn),放大縮小等功能。2)實(shí)時(shí)定位:可以將用戶當(dāng)前位置在地圖上顯示出來,并即時(shí)獲取位置信息。3)地圖模式:能夠讓地圖顯示衛(wèi)星視圖,交通視圖和普通視圖。4)周邊搜索:能夠搜索附近的美食,酒店等信息。5)路線規(guī)劃:能夠根據(jù)用戶輸入的起始點(diǎn)信息,為用戶規(guī)劃路線。6)路線導(dǎo)航:可以在地圖上規(guī)劃出用戶的路線,并進(jìn)行語音導(dǎo)航。7)實(shí)時(shí)路況:能夠?qū)崟r(shí)掌握交通路況信息。
基于上述功能分析,可以得到用戶視域的業(yè)務(wù)流程圖,如圖1所示。
3.2詳細(xì)設(shè)計(jì)
搜索:使用PoiSeareh類負(fù)責(zé)搜索,設(shè)置OnGetPoiSearehResuhListener監(jiān)聽事件,來操作搜索結(jié)果,更人性化、更直觀的展示給用戶。
視圖切換:使用BaiMap對象,調(diào)用setMapType(int arg)設(shè)置地圖的顯示模式。即BaiduMap.MAP_TYOE_NORMAL代表標(biāo)準(zhǔn)視圖,BaiduMap.MAP_TYPE_SATELLITE代表衛(wèi)星視圖。同時(shí),調(diào)用setTrafficEnabled(booleanⅡag)方法設(shè)置交通圖是否顯示,true代表顯示,false代表不顯示f即實(shí)時(shí)路況信息)。
定位:使用LoeationClient類,創(chuàng)建定位對象。使用Loca-tionClientOption類設(shè)置定位的配置參數(shù),譬如設(shè)置坐標(biāo)類型等。使用BDLocationListener類監(jiān)聽當(dāng)前位置的信息,以便進(jìn)行實(shí)時(shí)定位。
路線規(guī)劃:使用RoutePlanSeareh類負(fù)責(zé)步行、駕車等路線的規(guī)劃。使用相應(yīng)的路線規(guī)劃配置類(譬如,步行配置類Walk—ingRoutePlanOption)進(jìn)行路線的起始點(diǎn)等信息的配置。同時(shí),使用OnGetRoutePlanResuhListener類監(jiān)聽路線搜索,并進(jìn)行相應(yīng)的處理。
導(dǎo)航:使用BaiduNaviManager類,調(diào)用launchNavigator方法使用定位導(dǎo)航的功能。
4系統(tǒng)實(shí)現(xiàn)
4.1開發(fā)工具及環(huán)境
本文的Android應(yīng)用使用eclipse IDE開發(fā)工具,采用iava語言編寫開發(fā)。
Java語言是一種跨平臺(tái)的語言,包含多線程,簡單性,高性能等優(yōu)點(diǎn),是Android系統(tǒng)上軟件的主要開發(fā)語言。Java語言是一種動(dòng)態(tài)的解釋型語言,具有較高的安全性,可移植性,結(jié)構(gòu)中立,可分布式開發(fā)。
4.2系統(tǒng)實(shí)現(xiàn)方法
系統(tǒng)實(shí)現(xiàn)是軟件開發(fā)的一個(gè)非常重要的部分。經(jīng)需求分析,系統(tǒng)設(shè)計(jì)之后,接下來就是具體的程序編碼和功能實(shí)現(xiàn)。
對于一個(gè)地圖系統(tǒng)來說,定位和視圖,地圖控制,搜索是比較常用的功能,所以把這些信息顯示在主界面,方便用戶操作。對于主界面上的搜索框,采用了EditText標(biāo)簽,旁邊的搜索按鈕采用BuRon標(biāo)簽。同時(shí),“地球”圖標(biāo)和定位圖標(biāo)采用ImageView標(biāo)簽實(shí)現(xiàn)。同時(shí),為各個(gè)按鈕設(shè)置監(jiān)聽觸發(fā),來完成相應(yīng)的功能。如圖2所示。
主要技術(shù)實(shí)現(xiàn),在地圖布局中設(shè)置相應(yīng)的點(diǎn)擊監(jiān)聽類OnMapClickListener,每次點(diǎn)擊,就會(huì)觸發(fā)監(jiān)聽對象,然后,在該點(diǎn)擊監(jiān)聽類中的onMapClick(LatLng latLng)方法內(nèi),編寫對此地圖點(diǎn)擊事件的處理過程,那么該監(jiān)聽對象就會(huì)調(diào)用該方法進(jìn)行相應(yīng)的處理工作。
其他功能實(shí)現(xiàn)與此類似,不再贅述。
5結(jié)束語
本文以百度地圖提供的安卓平臺(tái)API調(diào)用接口為基礎(chǔ),采用JAVA語言進(jìn)行了開發(fā)技術(shù)研究,實(shí)現(xiàn)了地圖控制、實(shí)時(shí)定位、周邊搜索、路線規(guī)劃、路線導(dǎo)航等功能,實(shí)踐證明,通過百度地圖API可以快速高效的進(jìn)行地圖位置服務(wù)應(yīng)用開發(fā),效果良好。endprint