《基于Android的地圖導(dǎo)航系統(tǒng)設(shè)計(jì)》8200字_第1頁
《基于Android的地圖導(dǎo)航系統(tǒng)設(shè)計(jì)》8200字_第2頁
《基于Android的地圖導(dǎo)航系統(tǒng)設(shè)計(jì)》8200字_第3頁
《基于Android的地圖導(dǎo)航系統(tǒng)設(shè)計(jì)》8200字_第4頁
《基于Android的地圖導(dǎo)航系統(tǒng)設(shè)計(jì)》8200字_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章前言1.1研究背景當(dāng)今社會(huì),手機(jī)己經(jīng)成為人們工作生活中必不可少的一項(xiàng)通訊和娛樂工具。隨著手機(jī)的不斷更新,手機(jī)的各種高層服務(wù)和應(yīng)用層出不窮。其中,手機(jī)導(dǎo)航服務(wù),是一項(xiàng)新興且有廣闊市場(chǎng)和應(yīng)用價(jià)值的業(yè)務(wù),尤其是基于位置的網(wǎng)絡(luò)地圖服務(wù)近年來備受人們關(guān)注。它利用移動(dòng)終端的定位技術(shù),通過移動(dòng)通信網(wǎng)絡(luò)與手機(jī)地圖應(yīng)用服務(wù)器之間的互聯(lián)通信,提供給客戶各種與位置相關(guān)的信息服務(wù),方便了用戶的出行。目前的地圖服務(wù)主要是以單機(jī)或者Web的方式實(shí)現(xiàn),不適合身處外地的用戶使用,給用戶的出行帶來了不便。而手機(jī)地圖服務(wù)的便攜性和數(shù)據(jù)的實(shí)時(shí)性很好的解決了這一問題,因此,設(shè)計(jì)手機(jī)地圖服務(wù)的應(yīng)用具有非常實(shí)用的價(jià)值。1.2研究意義本人畢業(yè)設(shè)計(jì)的論題為《基于Android的地圖導(dǎo)航》正是基于Android平臺(tái)開發(fā)的,采用的網(wǎng)絡(luò)地圖BaiduMap,該系統(tǒng)可以用來瀏覽城市的地圖,并能對(duì)其放大、縮小和移動(dòng),同時(shí)利用GPS定位技術(shù),實(shí)現(xiàn)了自我定位、位置查找和路徑跟蹤等功能,滿足了手機(jī)用戶基本的地圖導(dǎo)航服務(wù)需求。本人全程參與了該產(chǎn)品的需求調(diào)研階段、完成了該產(chǎn)品的需求分析、產(chǎn)品概要設(shè)計(jì)、各模塊功能的代碼實(shí)現(xiàn)工作。在該產(chǎn)品的開發(fā)實(shí)現(xiàn)過程中,本人的Android平臺(tái)開發(fā)水平得到了進(jìn)一步提升,對(duì)于該產(chǎn)品的涉及到的關(guān)鍵技術(shù)可以進(jìn)行更好的實(shí)際運(yùn)用。第2章關(guān)鍵技術(shù)介紹2.1MVC技術(shù)2.1.1MVC介紹MVC就是將原本處理程序的整體進(jìn)行分離,使得業(yè)務(wù)處理和最終顯示分開執(zhí)行[3],從而提高運(yùn)行效率,降低融合度,增強(qiáng)可開發(fā)性和維護(hù)性。MVC模式具有視圖功能,視圖可以說是觀察者的窗口,所以MVC可以成為觀察者通知模式。模型在運(yùn)行完成之后,可以向特定的視圖用戶或所有的視圖用戶發(fā)送其結(jié)果,視圖根據(jù)結(jié)果的情況進(jìn)行相應(yīng)頁面的改變,最終結(jié)果展現(xiàn)給用戶。(1)模型。所謂模型就是將相同或相似的處理程序進(jìn)行封裝,它將程序和數(shù)據(jù)集合在一起,通過該模型實(shí)現(xiàn)一個(gè)處理方法,是程序運(yùn)行的主體,在實(shí)際應(yīng)用中,模型有多個(gè)索引,能為多個(gè)視圖提供業(yè)務(wù)處理,可重用性較強(qiáng)。(2)視圖。視圖是用戶進(jìn)行指令下達(dá)和最終結(jié)果顯示的界面,根據(jù)MVC的設(shè)計(jì)原理,視圖不參與實(shí)際的業(yè)務(wù)處理,只和用戶進(jìn)行簡(jiǎn)單的交互。視圖接收指令,運(yùn)行在模型端,但視圖無法改變模型,模型可以將自己運(yùn)行的結(jié)果顯示在試圖端,動(dòng)態(tài)更新視圖的狀態(tài),顯示最終的結(jié)果給用戶。(3)控制器??刂破靼凑誐VC的功能安排,只負(fù)責(zé)指令的傳達(dá),它接收用戶的指令操作,例如點(diǎn)擊超鏈接或發(fā)送HTML表單時(shí),控制器接收用戶的操作指令,但其本身并不做任何處理,只是傳遞給模型進(jìn)行運(yùn)行,然后調(diào)用視圖進(jìn)行最終結(jié)果的顯示。2.1.2MVC的應(yīng)用大部分Web應(yīng)用程序都是用像ASP,PHP或者CFML這樣的過程化語言來創(chuàng)建的。它們將像數(shù)據(jù)庫查詢語句這樣的數(shù)據(jù)層代碼和像HTML這樣的表示層代碼混在一起。經(jīng)驗(yàn)比較豐富的開發(fā)者會(huì)將數(shù)據(jù)從表示層分離開來,但這通常不是很容易做到的,它需要精心的計(jì)劃和不斷的嘗試。由于模型返回的數(shù)據(jù)沒有進(jìn)行格式化,所以同樣的構(gòu)件能被不同界面使用。例如,很多數(shù)據(jù)可能用HTML來表示,但是它們也有可能要用MacromediaFlash和WAP來表示。MVC從根本上強(qiáng)制性的將它們分開。盡管構(gòu)造MVC應(yīng)用程序需要一些額外的工作,但是它給我們帶來的好處是無庸質(zhì)疑的。2.2Android系統(tǒng)架構(gòu)了解學(xué)習(xí)Android系統(tǒng)架構(gòu),首先需要分析需求在Android系統(tǒng),從總體框架進(jìn)行分析,然后學(xué)習(xí),Android系統(tǒng)將分為幾個(gè)功能模塊如訪問子系統(tǒng),本文將關(guān)注每個(gè)子系統(tǒng)詳細(xì)設(shè)計(jì)、安裝,并采用適當(dāng)?shù)募夹g(shù)和實(shí)現(xiàn)系統(tǒng)功能,軟件框架和語言。Android系統(tǒng)架構(gòu)疊層架構(gòu)主要包含以下三層[2]:1、內(nèi)核層2、系統(tǒng)庫及運(yùn)行時(shí)環(huán)境層3、應(yīng)用框架及應(yīng)用程序?qū)涌傮w的Android系統(tǒng)的框架架構(gòu)圖如圖2-1所示:圖2-1Android系統(tǒng)的框架架構(gòu)圖2.2.1內(nèi)核層除了Linux提供的標(biāo)準(zhǔn)驅(qū)動(dòng)外,還需要一些專有的驅(qū)動(dòng),例如Binder(IPC)等。Android內(nèi)核主要是基于Linux核心軟件平臺(tái)和業(yè)務(wù)系統(tǒng),系統(tǒng)內(nèi)核取決于版本的核心系統(tǒng)服務(wù)[3]。Linux核心層如圖2-2所示。圖2-2Linux核心層Android作為一個(gè)開放的操作系統(tǒng)內(nèi)核使用一個(gè)相當(dāng)穩(wěn)定的Linux的內(nèi)核,Linux內(nèi)核包含以下模塊:存儲(chǔ)管理(記錄管理)、安全(安全),網(wǎng)絡(luò)堆棧(NetworkStack),流程管理(ProcessManagement),驅(qū)動(dòng)程序模型(DriverModel)等,在硬件和軟件層建立一個(gè)抽象層(AbstractionLayer)。同時(shí),智能手機(jī)Android內(nèi)核有一些添加和刪除,更適應(yīng)智能手機(jī)Linux平臺(tái)。2.2.2AndroidRuntime和函數(shù)庫層安卓系統(tǒng)包含各種各樣的嵌入式圖書館系統(tǒng)中可以使用不同的組件,通過應(yīng)用程序框架為開發(fā)人員提供服務(wù)。安卓系統(tǒng)庫來支持應(yīng)用程序的正常運(yùn)行框架,它是連接到應(yīng)用程序框架和Linux內(nèi)核層的重要環(huán)節(jié)[4]。Android組件還可以使用一些C/c++庫,C/c++庫通過Android應(yīng)用程序框架為開發(fā)人員提供服務(wù)。Dalvik虛擬機(jī):根據(jù)注冊(cè)取決于Linux內(nèi)核,同時(shí)運(yùn)行多個(gè)實(shí)例,執(zhí)行。Dex文件。每個(gè)Android應(yīng)用程序在運(yùn)行時(shí)都有一個(gè)Dalivik虛擬機(jī)實(shí)例,這個(gè)實(shí)例,將不會(huì)運(yùn)行多個(gè)應(yīng)用程序在一個(gè)虛擬機(jī)。Android數(shù)據(jù)庫層如圖2-3所示:圖2-3Android數(shù)據(jù)庫層2.2.3應(yīng)用程序框架層Android應(yīng)用程序,都可由四個(gè)部分組成,分別是:1、Activity;2、IntentReceiver;3、Service;4、ContentProvider從系統(tǒng)的角度設(shè)計(jì),框架層是Android系統(tǒng)的核心部分,它是一個(gè)全球協(xié)作,參與每個(gè)操作的應(yīng)用程序?qū)印C總€(gè)構(gòu)造窗口,處理用戶交互,接口,獲取當(dāng)前地理信息,了解設(shè)備信息,如操作,都是在各種系統(tǒng)服務(wù)的支持。對(duì)于開發(fā)人員來說,最直觀的反映了SDK框架層,它通過一系列的Java功能模塊,實(shí)現(xiàn)所需的功能的應(yīng)用程序。現(xiàn)在Android應(yīng)用程序框架是一個(gè)可重用的軟件組件,可以幫助本文簡(jiǎn)化應(yīng)用程序在這個(gè)階段的發(fā)展,并為應(yīng)用程序提供的api,這也是Android系統(tǒng),本文可以借鑒的一個(gè)重要的地方。SDK設(shè)計(jì)決定了上層應(yīng)用程序開發(fā)模型,開發(fā)效率和可以實(shí)現(xiàn)的功能類別。其中,活動(dòng)、服務(wù)和IntentReceiverAndroid是最基本的三個(gè)組成部分。這四個(gè)部分或部分相互協(xié)調(diào)本文的應(yīng)用程序。組件的必要功能以及一些必要條件等。所以本文使用到來當(dāng)一個(gè)組件需要在配置文件中注冊(cè),即使你在代碼中使用的組件,Android系統(tǒng)也找不到該組件?,F(xiàn)在安卓系統(tǒng)的應(yīng)用程序GUI應(yīng)用程序,包含各種需要的公共資源,其原理是基于框架層API,如下圖2-4安卓系統(tǒng)的應(yīng)用程序?qū)?。圖2-4Androidsystem應(yīng)用層與以前的操作系統(tǒng),安卓系統(tǒng)的應(yīng)用程序是用Java語言編寫的,使用的操作支持業(yè)務(wù)和功能可以有更多的優(yōu)勢(shì)和潛力。2.3BaiduMapSDK介紹百度地圖AndroidSDK是一套基于Android1.5及以上版本設(shè)備的地圖開發(fā)工具。用戶可以使用該套SDK開發(fā)適用于Android系統(tǒng)移動(dòng)設(shè)備的地圖應(yīng)用,通過調(diào)用地圖SDK接口,您可以輕松訪問百度地圖服務(wù)和數(shù)據(jù),構(gòu)建功能豐富、交互性強(qiáng)的地圖類應(yīng)用程序。百度地圖AndroidSDK提供的所有服務(wù)是免費(fèi)的,接口使用無次數(shù)限制。圖2-5BaiduMapSDKBaiduMapSDK功能介紹:地圖展示:包括2D圖、衛(wèi)星圖、3D圖地圖展示。地圖操作:提供平移、縮放、雙指手勢(shì)操作、底圖旋轉(zhuǎn)等地圖相關(guān)操作。自定義繪制:提供自定義繪制點(diǎn)、線、面基本幾何圖形的功能。百度地圖導(dǎo)航:提供調(diào)起百度地圖Android版(v5.0及以上版本)導(dǎo)航功能。地圖搜索:提供根據(jù)關(guān)鍵字進(jìn)行范圍檢索、城市檢索和周邊檢索。且支持LBS云檢索用戶自有數(shù)據(jù)。詳情查詢:提供餐飲類的POI的詳細(xì)信息查看(Place詳情)。線路規(guī)劃:提供公交、駕車和步行三種類型,多種方案(不含地鐵、時(shí)間優(yōu)先、最少換乘、最少步行)的線路規(guī)劃。位置標(biāo)注:提供一個(gè)或多個(gè)POI位置標(biāo)注,且支持用戶自定義圖標(biāo)。實(shí)時(shí)路況:提供城市實(shí)時(shí)交通路況信息圖。離線地圖:提供離線地圖功能,可節(jié)省用戶流量。定位:采用GPS、WIFI、基站、IP混合定位模式,請(qǐng)使用Android定位SDK獲取定位信息,使用地圖SDK定位圖層進(jìn)行位置展示。在使用百度地圖SDK中還有一點(diǎn)需要引起注意,在使用地圖引擎管理類—BMapManager的時(shí)候需要一個(gè)密鑰,這個(gè)密鑰需要可以在百度地圖官網(wǎng)上進(jìn)行申請(qǐng)獲得。在每次使用的時(shí)候都需要調(diào)用以下代碼對(duì)這個(gè)類進(jìn)行初始化mBMapMan.init("我的Key",null),其中“我的Key”就是在百度官網(wǎng)上申請(qǐng)的密鑰。第3章系統(tǒng)需求分析3.1系統(tǒng)需求分析3.1.1功能需求以系統(tǒng)業(yè)務(wù)需求分析階段的結(jié)果為基礎(chǔ),對(duì)每個(gè)業(yè)務(wù)流程進(jìn)行細(xì)化數(shù)據(jù)流向分析,據(jù)此可以得到系統(tǒng)各部分的功能模塊。所描述的系統(tǒng)技術(shù)要求在安卓平臺(tái)上可以運(yùn)行。在經(jīng)過一段時(shí)間的調(diào)查,研究之后,大致總結(jié)出了開發(fā)的App所需要具有的一些功能,如下所示:從上面的描述中可以基本了解軟件的功能需求:?jiǎn)?dòng)AppWidget應(yīng)用程序,登錄系統(tǒng);地圖界面:可查看的地圖信息、平移、縮放、查看當(dāng)前用戶位置;模糊查詢:根據(jù)用戶輸入信息查詢目的地,視野平移到目的地;周邊查詢:根據(jù)城市信息在一定范圍內(nèi)查詢并顯示若干的目的地;路況信息:顯示當(dāng)前的交通狀況;衛(wèi)星云圖:通過衛(wèi)星影像查看目的地真實(shí)場(chǎng)景;圖3-1系統(tǒng)功能結(jié)構(gòu)圖應(yīng)用從前臺(tái)方面進(jìn)功能設(shè)計(jì),主要功能包括搜索公交路線,周邊;查看實(shí)時(shí)路況以及使用不同模式查看地圖;查看附近的基本信息,包括:公交站,銀行等;搜索路線,包括:駕車,公交車,走路;使用該系統(tǒng)進(jìn)行導(dǎo)航等核心功能。3.1.2性能需求(1)優(yōu)化Java代碼安卓App的開發(fā)都是通過Java語言,算法的選擇比實(shí)現(xiàn)更為重要。為了能極大的優(yōu)化應(yīng)用程序,需要利用簡(jiǎn)單的技術(shù),例如緩存和減少內(nèi)存的分配。(2)提高性能在代碼設(shè)計(jì)過程中,如何使用更少的內(nèi)存來達(dá)到提高運(yùn)行速度的效果,如何設(shè)計(jì)CPU來分配內(nèi)存,都是要考慮到的事情,因?yàn)檫@些回直接影響到內(nèi)存訪問有著直接的影響。(3)利用多線程開發(fā)安卓App,使用的是java編程語言。為了能提升安卓設(shè)備的性能以及減少響應(yīng)的時(shí)間來及時(shí)的響應(yīng)用戶,多線程編程就尤為重要。3.1.3開發(fā)運(yùn)行需求(1)開發(fā)平臺(tái)地圖導(dǎo)航軟件的開發(fā)是在Eclipse環(huán)境下進(jìn)行的。Eclipse是一個(gè)開源的Java開發(fā)環(huán)境,不僅僅是功能非常強(qiáng)大,簡(jiǎn)單的操作也是它受歡迎的因素之一。實(shí)際上,它就是一個(gè)框架以及一組服務(wù),是通過插件組件來構(gòu)建開發(fā)環(huán)境。安卓直接提供了ADT插件,極大的簡(jiǎn)化了開發(fā)流程。(2)運(yùn)行平臺(tái)地圖導(dǎo)航軟件可以在安卓手機(jī)或安卓模擬器上運(yùn)行,本地圖導(dǎo)航軟件設(shè)計(jì)時(shí)使用夜神模擬器來運(yùn)行。將AVD的名稱輸入到name里面,然后在Target中選擇需要使用的類庫,接著創(chuàng)建SDCard以及皮膚,最后點(diǎn)擊Finish按鈕就可以了。3.2可行性分析3.2.1技術(shù)可行性系統(tǒng)建設(shè)使用的框架是開源的,便于在網(wǎng)絡(luò)上進(jìn)行學(xué)習(xí)和查詢,能夠及時(shí)解決遇到的問題。技術(shù)可行性主要是根據(jù)系統(tǒng)分析得到的所需要的開發(fā)軟件、支持軟件、硬件環(huán)境和操作人員的要求。在在Android框架上開發(fā)應(yīng)用程序,使用JAVA語言和SQLite數(shù)據(jù)庫,因此在技術(shù)上是可行的。3.2.3經(jīng)濟(jì)可行性系統(tǒng)的建立由于是公司的直接投入建設(shè),因此必須要考慮到整個(gè)系統(tǒng)本身的經(jīng)濟(jì)可行性以及實(shí)際的建設(shè)投入成本預(yù)期產(chǎn)生的經(jīng)濟(jì)效益。開發(fā)一個(gè)app前,要對(duì)成本,經(jīng)濟(jì)效益等進(jìn)行一定的研究,這就是經(jīng)濟(jì)可行性分析。本地圖導(dǎo)航軟件作為畢業(yè)設(shè)計(jì),并不關(guān)注經(jīng)濟(jì)上的效益,僅僅側(cè)重于對(duì)自己安卓開發(fā)能力的提高和編程上的進(jìn)步,相對(duì)于構(gòu)建地圖導(dǎo)航系統(tǒng)的投入,其獲得的經(jīng)濟(jì)價(jià)值才是最重要的,在經(jīng)濟(jì)上并沒有什么要求,有臺(tái)PC就可以,所以在經(jīng)濟(jì)上是完全可行的。3.2.4安全可行性系統(tǒng)所有功能模塊和軟硬件整體足夠穩(wěn)定,無論什么時(shí)候都不能出現(xiàn)死機(jī)狀況,更不能發(fā)生系統(tǒng)癱瘓。數(shù)據(jù)信息維護(hù)與管理方便、安全。數(shù)據(jù)信息的管理充分考慮數(shù)據(jù)信息管理權(quán)限的要求,實(shí)現(xiàn)授權(quán)流程優(yōu)化、便捷安全,數(shù)據(jù)記錄的生成具有擴(kuò)展性,方便日后的修改與維護(hù)。系統(tǒng)數(shù)據(jù)維護(hù)快捷、方便。軟件升級(jí)和修改方便簡(jiǎn)單,系統(tǒng)組件可以自動(dòng)升級(jí)和部署,具有錯(cuò)誤排除和遠(yuǎn)程分析功能。3.3非功能性需求(1)系統(tǒng)的安全性本系統(tǒng)設(shè)計(jì)時(shí)考慮了加密權(quán)限和必要的保密措施,以此保證系統(tǒng)安全可靠。要滿足數(shù)據(jù)保存的完整,在手機(jī)地圖軟件中,必須要有備份的功能,才能確保系統(tǒng)的整體性,能夠長(zhǎng)期運(yùn)行,需要額外的網(wǎng)絡(luò)安全防火墻,傳輸數(shù)據(jù)是加密的。當(dāng)然,設(shè)計(jì)者還應(yīng)當(dāng)對(duì)開發(fā)系統(tǒng)中的硬件配置給予充分的注意和考慮。(2)系統(tǒng)的響應(yīng)時(shí)間本系統(tǒng)在線測(cè)試速度性能不超過10毫秒,根據(jù)用戶的需要可以進(jìn)一步提高,能夠保證系統(tǒng)的運(yùn)行,添加餐品,搜索信息,操作完成立刻能夠返回信息,不能產(chǎn)生有等待的感覺,這是用戶正常需要的性能。(3)系統(tǒng)的可擴(kuò)展性作為一個(gè)百度地圖應(yīng)用系統(tǒng)來說,系統(tǒng)應(yīng)充分考慮未來的可擴(kuò)展性,例如查詢的條件會(huì)不斷的增加和變化,這要求系統(tǒng)由足夠的條件進(jìn)行功能的完善和擴(kuò)展。第4章系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)4.1系統(tǒng)開發(fā)環(huán)境與工具在進(jìn)行系統(tǒng)開發(fā)之前需要提前對(duì)系統(tǒng)的開發(fā)環(huán)境進(jìn)行必要的了解和搭建,并且選擇適當(dāng)?shù)拈_發(fā)工具來推動(dòng)應(yīng)用程序的開發(fā)過程。在本軟件開發(fā)過程中搭建的開發(fā)環(huán)境和所選用的開發(fā)工具如下:開發(fā)語言:java語言,JSP動(dòng)態(tài)網(wǎng)頁編程語言開發(fā)平臺(tái):Android平臺(tái)開發(fā)過程的操作系統(tǒng)支持:Windows系統(tǒng)數(shù)據(jù)庫:MySQL數(shù)據(jù)庫體系結(jié)構(gòu):C/S模式。C/S模式系統(tǒng)以服務(wù)器作為數(shù)據(jù)處理和存儲(chǔ)平臺(tái),在終端設(shè)計(jì)有專門的應(yīng)用程序進(jìn)行數(shù)據(jù)的采集和初次處理,再將數(shù)據(jù)傳遞到服務(wù)器端,用戶必須使用客戶端應(yīng)用程序才能對(duì)數(shù)據(jù)進(jìn)行操作。開發(fā)工具:MyEclipse(adt-bundle-windows-x86-20140321)MyEclipseFor-Spring9.0+Tomcat服務(wù)器。開發(fā)環(huán)境需要安裝相應(yīng)的java開發(fā)包JDK以及相應(yīng)的Android編程的SDK。開發(fā)環(huán)境為MyEclipse,需要注意的是對(duì)于客戶端和服務(wù)器的程序都需要有特定集成的MyEclipse才能進(jìn)行。這樣就為應(yīng)用程序的開發(fā)做好了準(zhǔn)備。4.2系統(tǒng)功能設(shè)計(jì)該應(yīng)用程序的整個(gè)系統(tǒng)流程也比較簡(jiǎn)單明了,用戶在進(jìn)入系統(tǒng)后根據(jù)自己的需求選擇相應(yīng)的功能,頁面就會(huì)跳轉(zhuǎn)到該功能所對(duì)應(yīng)的activity界面,當(dāng)用戶在使用完該功能想要使用別的功能的時(shí)候可以點(diǎn)擊返回就會(huì)回到應(yīng)用程序主界面,然后再點(diǎn)擊對(duì)應(yīng)的功能按鈕后就可以進(jìn)入相應(yīng)的功能界面了。系統(tǒng)的整個(gè)流程圖如下圖4-1所示:圖4-1系統(tǒng)流程圖上圖就是將要開發(fā)的應(yīng)用程序的整個(gè)流程,通過上圖我們可以看出該應(yīng)用程序操作簡(jiǎn)單、使用方便、結(jié)構(gòu)明了,對(duì)于用戶來說使用起來也能得心應(yīng)手。4.4數(shù)據(jù)庫設(shè)計(jì)本應(yīng)用程序的數(shù)據(jù)來源主要有兩個(gè),分別是離線的地圖文件和百度服務(wù)器文件??紤]經(jīng)濟(jì)適用性,可以采用地圖上面的基本數(shù)據(jù)用離線地圖文件加載,而動(dòng)態(tài)的數(shù)據(jù)從百度服務(wù)器獲取的方法,離線地圖的文件會(huì)保存在sdcard上的/BaiduMapSDK/vmp/h/路徑下,如下圖4-2所示:圖4-2離線地圖文件夾圖上圖中目錄下的.dat文件就是離線地圖文件,圖中DVUserdat.cfg文件就是離線地圖文件的索引文件,應(yīng)用程序就是通過這個(gè)索引文件來快速方便的找離線地圖文件的。第5章系統(tǒng)實(shí)現(xiàn)5.1主功能界面開發(fā)本應(yīng)用程序主功能界面選用的是一個(gè)ListView控件,該界面的設(shè)計(jì)原理就是為該ListView通過設(shè)置適配器從而為其中的每一個(gè)Item設(shè)置一個(gè)對(duì)應(yīng)的activity,從而實(shí)現(xiàn)用戶想要用到的功能。設(shè)計(jì)好的主功能界面圖如下下圖5-1所示:圖5-1主功能界面圖5.2基本地圖加載功能開發(fā)5.2.1地圖加載界面開發(fā)當(dāng)想要查看百度基本地圖的時(shí)候,可以點(diǎn)擊主功能界面的百度基本地圖,可以看到更詳細(xì)的地圖界面。百度基本地圖界面如下圖5-2所示:圖5-2基本地圖界面5.3定位功能開發(fā)定位功能是為方便用戶搜索自己想要查看的某一地點(diǎn)而設(shè)計(jì)的,這個(gè)界面設(shè)計(jì)成兩個(gè)文本框,界面中還有一個(gè)搜索按鈕用來滿足用戶在輸入想要搜索的目標(biāo)后進(jìn)行搜索的功能。用戶在點(diǎn)擊主界面的定位位置查詢后,會(huì)跳轉(zhuǎn)到下圖5-3所示的界面:圖5-3位置查詢界面定位功能界面的布局代碼是在布局文件mylocation.xml實(shí)現(xiàn)的。該功能的業(yè)務(wù)邏輯實(shí)現(xiàn)是在com.main.maymap目錄下的locationOverlay.java文件中實(shí)現(xiàn)的,具體代碼如下:以上代碼就是地圖定位功能實(shí)現(xiàn)所用到的代碼。5.4衛(wèi)星云圖功能開發(fā)只需要在功能實(shí)現(xiàn)代碼中將衛(wèi)星云圖顯示方式設(shè)置為True就可以了。當(dāng)用戶點(diǎn)擊衛(wèi)星云圖時(shí)可以以一種比較逼真的形式瀏覽地圖,衛(wèi)星云圖的顯示界面如下圖5-4所示:圖5-4衛(wèi)星云圖衛(wèi)星云圖的業(yè)務(wù)邏輯實(shí)現(xiàn)是在com.main.mymap目錄下的mapviewsatellite.java文件中實(shí)現(xiàn)的,一下是主要代碼:MapViewmapView=(MapView)findViewById(R.id.bmapView);mapView.setSatellite(true);//設(shè)置以衛(wèi)星云圖的視角顯示mapView.setBuiltInZoomControls(true);以上代碼即為衛(wèi)星云圖顯示功能的主要代碼。5.5實(shí)時(shí)交通狀況功能開發(fā)該功能的主要用處是當(dāng)用戶出行的時(shí)候可以方便的查看外界交通是否堵塞從而選擇合適的路線和合適的時(shí)間出行以免減少不必要的時(shí)間浪費(fèi)。實(shí)時(shí)交通狀況的顯示界面如下圖5-5所示:圖5-5實(shí)時(shí)交通狀況圖實(shí)時(shí)交通狀況圖的業(yè)務(wù)邏輯實(shí)現(xiàn)是在com.main.mymap目錄下的mapViewTraffic.java文件中實(shí)現(xiàn)的,具體代碼如下:MapViewmapView=(MapView)findViewById(R.id.bmapView);mapView.setTraffic(true);mapView.setBuiltInZoomControls(true);以上代碼就是實(shí)時(shí)交通狀況的主要功能代碼。5.6公交線路查詢功能開發(fā)公交線路查詢功能主要是為了方便用戶了解自己想要查詢的某一路公交車的運(yùn)行路線,因此該公交線路查詢功能界面設(shè)計(jì)如下圖5-6所示:圖5-6公交線路查詢圖公交路線查詢界面的布局是在layout目錄下的buslineserach.xml文件中實(shí)現(xiàn)的。公交線路查詢功能需要在公交線路查詢界面上顯示出一條公交線路,因此在代碼中也需要添加圖層。該功能的也無邏輯實(shí)現(xiàn)是在com.main.mymap目錄下的BusLineSerach.java文件中實(shí)現(xiàn)的,其中的主要代碼如下圖所示:通過這段代碼即可實(shí)現(xiàn)公交線路查詢功能。5.7路線規(guī)劃功能開發(fā)路線規(guī)劃功能是為了在用戶出行而不知道該如何到達(dá)自己想要到達(dá)的目的地是為其提供的一種或者多種解決辦法的功能。點(diǎn)擊相應(yīng)的按鈕即代表采用相應(yīng)的交通方式進(jìn)行線路規(guī)劃,因此線路規(guī)劃功能界面可設(shè)計(jì)成如下圖5-7所示:圖5-7線路規(guī)劃界面圖上圖所示的線路規(guī)劃代碼是在layout目錄下的routeplan.xml文件中實(shí)現(xiàn)。該功能的業(yè)務(wù)邏輯是在com.main.mymap目錄下的RoutePlan.java文件中實(shí)現(xiàn)的,其主要功能代碼如下所示:以上代碼即為路線規(guī)劃功能的主要代碼。5.8測(cè)試結(jié)論由于自己沒有什么獨(dú)自寫App的經(jīng)驗(yàn),在開發(fā)過程中,出現(xiàn)了一些預(yù)想之外的系統(tǒng)缺陷,出現(xiàn)的結(jié)果與自己預(yù)想的不一致,比如說由于代碼規(guī)范問題導(dǎo)致接口之間出現(xiàn)了問題,實(shí)現(xiàn)的功能與自己之前設(shè)想的有出入,導(dǎo)致需要不停的修改。所以在正式完成這個(gè)App前,需要反復(fù)的對(duì)其進(jìn)行測(cè)試,修改,不斷地去完善這個(gè)地圖導(dǎo)航App。在整個(gè)測(cè)試中,根據(jù)之前寫好的需求文檔和設(shè)計(jì)文檔,對(duì)功能逐一進(jìn)行檢測(cè),并寫好

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論