移動(dòng)自助旅游系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
智慧旅游的特點(diǎn)在于智慧,通過(guò)大數(shù)據(jù)、云計(jì)算等方法,讓人們的旅行變得智慧起來(lái),人們可以通過(guò)智能手機(jī)來(lái)訂景點(diǎn)門票、查景點(diǎn)說(shuō)明、進(jìn)行路徑規(guī)劃,實(shí)現(xiàn)真正意義上的智慧旅游。本課題將旅游業(yè)和Android智能平臺(tái)相連,搭建出一款移動(dòng)自助旅游軟件,包括實(shí)時(shí)定位、路徑規(guī)劃、景點(diǎn)搜索、景點(diǎn)展示功能,方便游客的出行旅游。
1移動(dòng)自助旅游平臺(tái)設(shè)計(jì)
1.1移動(dòng)自助旅游系統(tǒng)的總體設(shè)計(jì)
如圖1所示,本移動(dòng)自助旅游軟件分為客戶端和服務(wù)器端兩個(gè)部分,服務(wù)器端包括定位服務(wù)和地圖服務(wù),服務(wù)器端為客戶端提供數(shù)據(jù)和訪問(wèn)請(qǐng)求:客戶端是基于百度地圖API平臺(tái)進(jìn)行設(shè)計(jì)和開(kāi)發(fā)的。
1.2移動(dòng)自助旅游的實(shí)現(xiàn)方法
本軟件基于Android開(kāi)發(fā)平臺(tái),以百度地圖開(kāi)源API為工具,以移動(dòng)自助旅游為背景,在Android系統(tǒng)的平板或手機(jī)上進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)跟移動(dòng)自助旅游有關(guān)的四大主要功能:
(1)基于Android系統(tǒng),將百度地圖APIsDK導(dǎo)入到程序中,并實(shí)現(xiàn)定位功能。
百度地圖開(kāi)源API為開(kāi)發(fā)者提供了強(qiáng)大的數(shù)據(jù)資源,開(kāi)發(fā)者可以下載百度地圖提供的API,直接導(dǎo)入到程序中,然后通過(guò)相關(guān)代碼調(diào)用導(dǎo)入的程序包,整合后便可實(shí)現(xiàn)定位功能。
(2)基于Android系統(tǒng),實(shí)現(xiàn)電子地圖的查詢和搜索功能。
通過(guò)在電子地圖上搜索目的地進(jìn)行景點(diǎn)查詢時(shí),數(shù)據(jù)信息由網(wǎng)絡(luò)獲取,需要開(kāi)發(fā)者自己定義搜索框,然后通過(guò)字符串的傳輸和接收,再與按鍵綁定,實(shí)現(xiàn)在電子地圖中的檢索功能。
(3)基于Android系統(tǒng),研究電子地圖路徑規(guī)劃算法。
在路徑檢索服務(wù)器中,百度地圖存儲(chǔ)了由全國(guó)各地收集的路網(wǎng)數(shù)據(jù)。道路數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是一個(gè)加權(quán)圖,權(quán)8是基于重距和離其因素計(jì)算的值。當(dāng)用戶計(jì)算起點(diǎn)和終點(diǎn)時(shí),服務(wù)器需要做的是搜索地圖的最小加權(quán)路徑。算法具有不同的權(quán)8,可以同時(shí)計(jì)算多條路線:最短路線、最快路線時(shí)間、減少紅燈等等。
(4)基于Android系統(tǒng),實(shí)現(xiàn)景點(diǎn)展示功能。
用戶在客戶端搜索景點(diǎn)的關(guān)鍵詞,然后通過(guò)按鍵跳轉(zhuǎn),展示出用戶所搜索的景點(diǎn)。
功能設(shè)計(jì):設(shè)計(jì)出一款具有顯示地圖、精準(zhǔn)定位、景點(diǎn)搜索、路徑規(guī)劃、景點(diǎn)展示功能的電子地圖。
開(kāi)發(fā)程序:在Android平臺(tái)上,使用Java語(yǔ)言進(jìn)行開(kāi)發(fā)。
軟件測(cè)試:在實(shí)現(xiàn)了功能之后,通過(guò)調(diào)試使這款自助旅游軟件更加完善,減少錯(cuò)誤。
2移動(dòng)自助旅游平臺(tái)實(shí)現(xiàn)
2.1顯示百度地圖的基本地圖的設(shè)計(jì)
用戶在使用百度地圖開(kāi)源的資源之前,需要在百度開(kāi)發(fā)者平臺(tái)獲取開(kāi)發(fā)秘鑰。下面介紹在Androidstudio中配置工程的具體步驟:
(1)下載開(kāi)發(fā)包:首先要在百度地圖開(kāi)發(fā)者平臺(tái)的產(chǎn)品下載中下載自己需要的包。下載完畢后再打開(kāi)Androidstudio新建項(xiàng)目,輸入項(xiàng)目名稱,注意與申請(qǐng)AK秘鑰時(shí)的項(xiàng)目名稱和包名相對(duì)應(yīng)。
(2)將開(kāi)發(fā)包拷貝到工程:在工程應(yīng)用的libs目錄下放入baidumapapi***.jar包,新建jniLibs.src目錄下的so動(dòng)態(tài)庫(kù)工程會(huì)自動(dòng)加載,無(wú)需手動(dòng)配置。
(3)向工程中添加.jar文件:使用Androidstudio時(shí),在工程配置中,我們還需要把拷貝到工程中的jar包集成到自己建立的工程中,集成用AddAsLibrary。屆時(shí),在gradle相關(guān)文件中,會(huì)生成對(duì).jar文件的說(shuō)明。
2.2顯示百度地圖的基本地圖的實(shí)現(xiàn)
首先需要配置AndroidManifest.Ⅹml。
(1)在AndroidManifest中添加AK值、所需權(quán)限等信息:
(2)在定位的activitylocation.Ⅹml文件中添加地圖控件:
(3)應(yīng)用程序創(chuàng)建時(shí),所引用的xonteⅩt全局變量放在DemoApplication.java中:
(4)創(chuàng)建地圖Activity,管理地圖的生命周期。
完成以上步驟后,運(yùn)行程序,便可在真機(jī)(虛擬機(jī))上顯示地圖。
2.3百度地圖定位功能模塊的實(shí)現(xiàn)
定位功能的實(shí)現(xiàn),需要去借助百度地圖位置sDK。具體操作如下:
(l)添加百度地圖定位功能的sDK(包括jar包和.so文件)。
(2)添加百度地圖定位權(quán)限。
使用百度地圖定位sDK,首先要在AndroidManifest中聲明service組件。在此之后,百度地圖還要能夠獲取經(jīng)緯度、獲取地址、獲取位置描述、獲取周邊P0I。這樣的定位功能才能基本滿足人們的所需。利用百度地圖定位sDK,不僅可以獲得經(jīng)緯度信息,還可以獲得當(dāng)前地點(diǎn)的地址信息。獲取方法和相關(guān)配置如下:l)初始化LocationC1ient類:在主線程中聲明LocationC1ient類對(duì)象,該對(duì)象需要傳入Context類型參數(shù);2)配置定位sDK參數(shù);3)實(shí)現(xiàn)BDAbstractLocationListener接口;4)得到定位地址信息。
(3)最后在LocationDemo.java的0nCreate中調(diào)用Location-C1ient的start()方法,發(fā)起請(qǐng)求。在BDAbstractLocationListener接口中,便可獲得定位地址相關(guān)的信息。
2.4移動(dòng)自助旅游P01搜索模塊功能的設(shè)計(jì)和實(shí)現(xiàn)
本項(xiàng)目所用的信息交互需要連入互聯(lián)網(wǎng),數(shù)據(jù)從網(wǎng)絡(luò)中獲取。當(dāng)游客在客戶端提出了訪問(wèn)請(qǐng)求后,聯(lián)網(wǎng)數(shù)據(jù)庫(kù)開(kāi)始為wEB服務(wù)器提供數(shù)據(jù),之后數(shù)據(jù)再返回安卓客戶端供游客參考。本項(xiàng)目所提到的檢索功能在地理信息系統(tǒng)上稱為P0I檢索,用戶在檢索欄輸入自己的興趣點(diǎn),然后百度地圖返回這些興趣點(diǎn)并顯示在地圖中,這便是本部分功能的設(shè)計(jì)。
本項(xiàng)目實(shí)現(xiàn)了普通搜索和地點(diǎn)周邊搜索功能,下面介紹具體的實(shí)現(xiàn)辦法:
(1)創(chuàng)建搜索對(duì)象,使用靜態(tài)方法:newInstance。
(2)設(shè)置覆蓋類:為了在地圖上顯示定位,開(kāi)發(fā)者需要自己先建立一個(gè)覆蓋物(Poi0ver1ay)的.java文件,之后在P0I檢索的.java文件中調(diào)用。
(3)觸發(fā)檢索:在定位的界面通過(guò)P0I檢索功能,通過(guò)1istview加入顯示周邊景點(diǎn)的功能。這個(gè)功能能夠查找周邊方圓500m內(nèi)用戶所輸入的景點(diǎn),如果該景點(diǎn)在方圓500m內(nèi),則返回值。
2.5移動(dòng)自助旅游路徑規(guī)劃模塊的設(shè)計(jì)與實(shí)現(xiàn)
百度地圖sDK為開(kāi)發(fā)者提供了全面方便的路線規(guī)劃算法資源,包括了跨城路徑規(guī)劃、步行、公交、騎行和駕車。不同的出行方式,在實(shí)現(xiàn)功能的時(shí)候都需要新建一個(gè)0ver1ay來(lái)畫出步行路線圖層,包括起點(diǎn)、終點(diǎn)和轉(zhuǎn)彎點(diǎn)。具體的實(shí)現(xiàn)方法如下:
(1)創(chuàng)建路徑規(guī)劃?rùn)z索。
(2)注冊(cè)路徑規(guī)劃?rùn)z索的監(jiān)聽(tīng)者,并且獲得檢索結(jié)果。
(3)準(zhǔn)備路徑規(guī)劃?rùn)z索的起點(diǎn)和終點(diǎn)信息。
首先定義起點(diǎn)和終點(diǎn)的字符串:
privateEditTextstartNodestr;
privateEditTextendNodestr;
聲明起點(diǎn)、終點(diǎn)信息,并調(diào)用字符串:
P1anNodestNode=P1anNode.withCityNameAndP1aceName("北京",start);
P1anNodeenNode=P1anNode.withCityNameAndP1aceName("北京",end);
(4)如果輸入的字符串不為空并且沒(méi)有錯(cuò)誤,則返回?cái)?shù)據(jù)。
同時(shí),在路徑規(guī)劃中,除了需要顯示路徑信息的文本框,起點(diǎn)和終點(diǎn)的圖標(biāo)也需要提前準(zhǔn)備好,在路徑規(guī)劃工作時(shí),直接進(jìn)行調(diào)用即可。
2.6移動(dòng)自助旅游景點(diǎn)展示模塊的設(shè)計(jì)與實(shí)現(xiàn)
在布局文件中定義這個(gè)按鍵(button)的ID為@+id/showup,實(shí)現(xiàn)的目標(biāo)為:在文本框輸入景點(diǎn)后,點(diǎn)擊"景點(diǎn)展示"的按鍵,便跳轉(zhuǎn)到相關(guān)景點(diǎn)。實(shí)現(xiàn)步驟如下:
(1)在.java文件中找到布局文件所定義的按鍵:Buttonbtn=(Button)findViewById(R.id.showup);
(2)設(shè)置按鍵監(jiān)聽(tīng):
btn.set0nC1ickListener(newView.0nC1ickListener(){);
(3)從Edittext的文本框中得到字符串:
EditTextet=(EditText)findViewById(R.id.searchkey);stringcn=et.getText().tostring();
(4)每個(gè)景點(diǎn)的字符串(cn)為一種情況,通過(guò)switch語(yǔ)句來(lái)調(diào)轉(zhuǎn),以天安門為例:
case"天安門":
Intentintent=newIntent(PoisearchDemo.this,useTiananmen.c1ass);
startActivity(intent);
break;
3系統(tǒng)優(yōu)化與改進(jìn)
在游客眼中,好的系統(tǒng)能夠幫助游客合理安排游玩路線,僅有普通的路徑規(guī)劃無(wú)法體現(xiàn)自助旅游的特點(diǎn),希望在路徑規(guī)劃上加以改進(jìn),開(kāi)發(fā)出類似于"旅游景點(diǎn)最多路線"的路徑規(guī)劃,不斷滿足游客需求。