孫杰 樊春年 秦健勇
摘要:為了使人們能夠隨時隨地獲取地理信息,在手機上實現(xiàn)地圖服務(wù)就顯得極為重要。該文以新疆大學(xué)本部校園為例,設(shè)計實現(xiàn)一個基于Android的地圖位置服務(wù)系統(tǒng)。系統(tǒng)主要具有地圖加載、自身實時定位、校內(nèi)地點搜索、路徑規(guī)劃、位置提醒以及短信定位功能。
關(guān)鍵詞:位置服務(wù);百度地圖API;定位;路徑規(guī)劃
中圖分類號:TP311 文獻標(biāo)識碼:A文章編號:1009-3044(2016)13-0091-03
Abstract:In order that peopleenable to obtain location information in anytime and in anywhere, it is extremely important that to implementation of map services on the mobile phones.This paper took Xinjiang University main campus as an example,designed and implemented an location service system based on Android. The System has mainlyfunction, such as map loading, real-time location,location searching,route program, location hinting and message location.
Key words: location service;Baidu Map API; location; route program
隨著移動通信技術(shù)和計算機技術(shù)的發(fā)展,帶動了基于位置的服務(wù)[1]。3G技術(shù)和智能手機的普及,GPS與地圖服務(wù)的整合,為基于移動設(shè)備的位置服務(wù)供了良好的應(yīng)用環(huán)境。本文研究如何在Android平臺上利用百度提供的Baidu Maps API實現(xiàn)基于位置的服務(wù),基于位置的服務(wù)要解決的主要問題就是如何為用戶提供個性化的服務(wù)。目前移動位置服務(wù)大多數(shù)是針對城市或街區(qū)范圍而言,對于較小空間范圍的校園或景區(qū)的移動位置服務(wù)較少。設(shè)計面向校園用戶及特地區(qū)域的地圖導(dǎo)航軟件,為其提供定位、搜索、探路、事務(wù)辦理所需的位置信息,是地圖導(dǎo)航APP要解決的問題。
1 百度地圖API
百度地圖API是一套為開發(fā)者免費提供的基于百度地圖的應(yīng)用程序接口,包括JavaScript、iOS、Andriod等多種版本,提供基本地圖、位置搜索、路線規(guī)劃等數(shù)據(jù)服務(wù)[2].百度地圖為開發(fā)者提供了com.baidu.mapapi.map地圖包,主要負(fù)責(zé)控制地圖的顯示,下面是本系統(tǒng)開發(fā)中用到幾個主要的類[3]:
MapView:顯示地圖的View,當(dāng)被焦點選中時,它能捕獲按鍵事件和觸摸手勢去平移和縮放地圖。它和Button等控件定義類似,通過findViewById方法獲取,建立類文件時繼承Activity即可。
MapController:地圖控制器,用于控制地圖的移動,放大,縮小等功能。MapView調(diào)用函數(shù)MapView.getController()獲取MapController實例。
Overlay:覆蓋物,即在百度地圖上進行二次開發(fā)時添加的圖層類,可以設(shè)置在地圖上顯示圖標(biāo),文字等信息,通過在底層地圖上添加圖層來滿足我們的應(yīng)用需求。Overlay是一個基類,它表示可以顯示在地圖上方的覆蓋物。
2 功能設(shè)計
本系統(tǒng)以新疆大學(xué)為例,研究了校園用戶對地圖服務(wù)的需求,在此基礎(chǔ)上設(shè)計了相應(yīng)的功能。系統(tǒng)用例圖如圖1所示。
1)自身實時定位功能:用戶可以得到當(dāng)前所在的具體位置,如校園道路名稱等,并且在地圖上實時的標(biāo)注出來,可以根據(jù)用戶的位置的改變而改變,方便用戶獲得準(zhǔn)確的信息。系統(tǒng)支持兩種地圖顯示方式,即交通地圖與衛(wèi)星地圖。。
2)校內(nèi)搜索功能:用戶通過系統(tǒng)提供的搜索文本框,可以查詢附近的一些標(biāo)志性建筑的具體位置,以及對該位置的一些具體描述。如同學(xué)們關(guān)心的教師辦公室的具體位置以及聯(lián)系方式等,或者附近餐廳以及娛樂場所等。。
3)鄰近范圍提醒功能:當(dāng)用戶手持設(shè)備進入特定區(qū)域內(nèi),即可收到靠近目標(biāo)位置的提醒,提示用戶該地區(qū)內(nèi)的詳細(xì)信息。如靠近一號教學(xué)樓附近20米時,用戶打開鄰近范圍提醒界面將會收到一條提醒,“您已經(jīng)到達一號教學(xué)樓附近,該教學(xué)樓主要有新聞學(xué)院以及生物科學(xué)學(xué)院等”這樣的信息。
4)短信定位模塊:短信定位這一功能還可用于用戶走失時對其進行尋找。通過給對方發(fā)送短信,后臺啟動對方的定位服務(wù)(前提:對方必須安裝此軟件),獲取位置信息后系統(tǒng)將會自動發(fā)送一條包含經(jīng)緯度的短信給發(fā)送方,發(fā)送方收到短信時,解析短信內(nèi)容,獲取經(jīng)緯度顯示在地圖上。
5)路線查詢功能:校園導(dǎo)航系統(tǒng)的基本功能。用戶可以根據(jù)需要查詢從源點到目標(biāo)地點的可行線路,并提供實時導(dǎo)航服務(wù),同時也可以選擇兩點間的最短路線。
3數(shù)據(jù)庫設(shè)計
由于本系統(tǒng)需要后臺存取大量數(shù)據(jù)并且還需要根據(jù)不同條件進行查詢,若采用xml文件存儲,則對查詢帶來諸多不便。因此本系統(tǒng)采用了SQLite數(shù)據(jù)庫進行數(shù)據(jù)存儲,方便管理與查找。下面是本系統(tǒng)數(shù)據(jù)庫中定義的一些表:PLACE表用于存放本地化數(shù)據(jù)包括新疆大學(xué)校園內(nèi)部的一些餐廳,教師辦公室等;ROUTE_PLAN表主要存放一張圖的信息,包括點以及權(quán)值,用于計算最優(yōu)路徑。其具體設(shè)計如表1和表2所示。
4 系統(tǒng)實現(xiàn)關(guān)鍵技術(shù)
4.1主界面設(shè)計
系統(tǒng)主界面定義了整個系統(tǒng)的全部功能,主要包含自身定位、校內(nèi)地點搜索、范圍提醒、短信定位以及路線導(dǎo)航五大功能。如圖2所示。
4.2校內(nèi)搜索技術(shù)
實現(xiàn)技術(shù)包括:Spinner下拉框控件與數(shù)據(jù)庫信息的綁定,實現(xiàn)無輸查詢;搜索功能子線程的實現(xiàn),保證程序的正常運行;文本信息撥打電話格式的實現(xiàn);View與Bitmap的轉(zhuǎn)換,繞過付費許可,實現(xiàn)在地圖上添加文字。校內(nèi)搜索結(jié)果將具體的位置顯示在衛(wèi)星圖上,同時顯示該位置的具體地址以及聯(lián)系方式,為用戶查找提供方便。如圖3所示。
4.3路徑規(guī)劃技術(shù)
路徑規(guī)劃采用了Floyd-Warshall算法,它是解決任意兩點間的最短路徑的一種算法,可以正確處理有向圖或負(fù)權(quán)的最短路徑問題。算法的時間復(fù)雜度為O(N3),空間復(fù)雜度為O(N2)。Floyd算法是一個經(jīng)典的動態(tài)規(guī)劃算法,目標(biāo)是尋找從點i到點j的最短路徑[4]。從動態(tài)規(guī)劃的角度看問題,從任意節(jié)點i到任意節(jié)點j的最短路徑有兩種可能:一是直接從i到j(luò);二是從i經(jīng)過若干個節(jié)點k到j(luò)。因此,假設(shè)Dis(i,j)為節(jié)點u到節(jié)點v的最短路徑的距離,對于每一個節(jié)點k,檢查Dis(i,k) + Dis(k,j) < Dis(i,j)是否成立,如果成立,證明從i到k再到j(luò)的路徑比i直接到j(luò)的路徑短,便設(shè)置Dis(i,j) = Dis(i,k) + Dis(k,j),如此一來,遍歷完所有節(jié)點k,Dis(i,j)中記錄的便是i到j(luò)的最短路徑的距離。
使用算法前要求系統(tǒng)輸入一個圖的信息,該圖的信息提前以起點,終點以及權(quán)值的信息存放在數(shù)據(jù)庫表中,用戶查詢前首先通過數(shù)據(jù)庫查詢出各節(jié)點信息,通過算法轉(zhuǎn)換成該圖的鄰接矩陣,將鄰接矩陣傳入FLOYD算法中求出起點與終點之間的最短路徑的一組點,在將通過這一組點分別去數(shù)據(jù)庫中查詢對應(yīng)的經(jīng)緯度,再將這一組經(jīng)緯度通過百度的路徑顯示顯示到地圖上。
圖4為現(xiàn)有導(dǎo)航軟件對于校內(nèi)的路徑規(guī)劃,圖5為本系統(tǒng)實現(xiàn)的一段最優(yōu)路徑規(guī)劃,對比可以發(fā)現(xiàn)經(jīng)過最優(yōu)規(guī)劃的路徑,更加符合實際日常出行線路。
5 結(jié)束語
本文介紹了基于Android手機的地圖應(yīng)用軟件的開發(fā),通過對當(dāng)前流行的Baidu Map API平臺進行分析,在此基礎(chǔ)上提出了地圖位置服務(wù)。該系統(tǒng)實現(xiàn)了校內(nèi)位置搜索、路線導(dǎo)航、短信定位等功能,具有較高的實用性。當(dāng)然,該系統(tǒng)還需要進一步的完善,需要在日后的工作中不斷地探索和研究,以形成一套更加實用方便的地圖服務(wù)系統(tǒng)。
參考文獻:
[1] 陳金海.基于Android平臺的手機地鐵導(dǎo)航系統(tǒng)的設(shè)計與實現(xiàn)[D].昆明: 云南大學(xué),2012.
[2] 百度地圖API[EB/OL].http://lbsyun.baidu.com.
[3] 隆志堅.Android平臺基于baidu Map Api的導(dǎo)航應(yīng)用技術(shù)研究和實現(xiàn)[D]. 長沙: 國防科學(xué)技術(shù)大學(xué), 2011.
[4] 最短路徑—Dijkstra算法和Floyd算法[EB/OL]. http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html.