基于j2me平臺(tái)的gps導(dǎo)航系統(tǒng)畢業(yè)設(shè)計(jì)論文_第1頁(yè)
已閱讀1頁(yè),還剩50頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  摘要 </b></p><p>  本文系統(tǒng)將在J2ME平臺(tái)下,利用J2ME的JSR179定位開(kāi)發(fā)包與Google靜態(tài)地圖實(shí)現(xiàn)定位、興趣點(diǎn)添加、路線規(guī)劃以及離線地圖定位等功能。在用戶手機(jī)硬件支持J2ME和定位功能的情況下,用戶只要支付少量的GPRS流量費(fèi)即可對(duì)用戶的位置進(jìn)行定位、路線規(guī)劃等功能。另外為了節(jié)省用戶的GPRS流量,設(shè)計(jì)中也特定開(kāi)發(fā)了離線地圖模式,在

2、不聯(lián)網(wǎng)的情況下,用戶依然可以進(jìn)行GPS定位。</p><p>  本篇論文將分為七章進(jìn)行介紹。第一章緒論,介紹課題研究的背景、手機(jī)GPS導(dǎo)航發(fā)展現(xiàn)狀以及課題研究的主要內(nèi)意和意義;第二章主要對(duì)本文系統(tǒng)用的相關(guān)技術(shù)進(jìn)行介紹;第三、四、五章為本篇論文的重點(diǎn),詳細(xì)闡述了本文系統(tǒng)的需求、詳細(xì)設(shè)計(jì)以及存在的問(wèn)題等;第六章為GPS手機(jī)的發(fā)展前景展望;第七章則是本篇論文的總結(jié)。</p><p>  【關(guān)鍵

3、詞】 J2ME,MIDP,GPS,JSR179,Google靜態(tài)地圖</p><p>  Abstract </p><p>  This paper system will be in J2ME flat, we use the JSR179 positioning and J2ME setups static map realize positioning, Google adde

4、d interest points, route planning and offline map location etc. Function. In the mobile phone users to locate functional and J2ME hardware support for the case, as long as the users pay a small fee to the GPRS flow can b

5、e user location positioning, route planning etc. Function. In order to save the user of GPRS flow, design also developed offline map specific model, no</p><p>  This paper will be divided into seven chapter

6、was introduced. The first chapter the introduction, this paper introduces the background of the subject research, mobile GPS navigation development present situation and the main research topic in meaning and significanc

7、e; The second chapter to the article with the relevant technology of the system are introduced; Chapter 3, 4, 5 in the key for this paper, this paper expounds the system demand, and the detailed design and the existing p

8、roblem and so </p><p>  【Key Words】 J2ME,MIDP,GPS,JSR179,Google Static Map </p><p><b>  目錄</b></p><p><b>  摘要I</b></p><p>  AbstractII</p&

9、gt;<p><b>  目錄III</b></p><p><b>  引言V</b></p><p><b>  第一章 緒論1</b></p><p>  1.1 課題研究背景1</p><p>  1.2 手機(jī)GPS導(dǎo)航發(fā)展現(xiàn)狀1</p

10、><p>  1.3 課題主要內(nèi)容和意義2</p><p>  第二章 相關(guān)技術(shù)概覽4</p><p>  2.1 基于位置的服務(wù)4</p><p>  2.1.1 基于位置服務(wù)的應(yīng)用范圍4</p><p>  2.1.2 基于位置服務(wù)的定位方法4</p><p>  2.2 移

11、動(dòng)地理信息系統(tǒng)6</p><p>  2.3 J2ME簡(jiǎn)介7</p><p>  2.3.1 J2ME架構(gòu)7</p><p>  2.3.2 JVM ( 虛擬機(jī) )8</p><p>  2.3.3 MIDP( 移動(dòng)信息設(shè)備簡(jiǎn)表 )8</p><p>  2.4 JSR179開(kāi)發(fā)包9</p&

12、gt;<p>  2.5 Google API簡(jiǎn)介10</p><p>  2.6 路徑規(guī)劃的技術(shù)選擇10</p><p>  2.6.1 A算法實(shí)現(xiàn)最短路徑搜索10</p><p>  2.6.2 Google Directions API提供服務(wù)11</p><p>  2.6.3 路線規(guī)劃最終方法選擇1

13、2</p><p>  第三章 軟件需求分析13</p><p>  3.1 用戶需求13</p><p>  3.2 功能模塊劃分13</p><p>  3.2.1 功能模塊圖14</p><p>  3.2.2 功能要求14</p><p>  第四章 詳細(xì)設(shè)計(jì)與開(kāi)發(fā)1

14、6</p><p>  4.1 MIDlet開(kāi)發(fā)流程介紹16</p><p>  4.2 各功能模塊詳細(xì)設(shè)計(jì)17</p><p>  4.2.1 界面切換類17</p><p>  4.2.2 聯(lián)網(wǎng)地圖類19</p><p>  4.2.3 離線地圖類24</p><p> 

15、 4.2.4 各線程類26</p><p>  4.2.5 實(shí)體類27</p><p>  4.2.6 GoogleMaps類(引用開(kāi)源代碼)28</p><p>  4.2.7 興趣點(diǎn)添加類29</p><p>  4.2.8 興趣點(diǎn)查詢、刪除、鎖定類30</p><p>  4.2.9 指定地

16、點(diǎn)范圍興趣點(diǎn)搜索類32</p><p>  4.2.10路線規(guī)劃具體的實(shí)現(xiàn)34</p><p>  第五章 開(kāi)發(fā)過(guò)程中問(wèn)題及解決方案40</p><p>  5.1 存在問(wèn)題及解決40</p><p>  5.1.1 Google靜態(tài)地圖訪問(wèn)限制40</p><p>  5.1.2 閃屏40<

17、/p><p>  5.1.3 網(wǎng)絡(luò)延遲41</p><p>  5.1.4 不同的屏幕尺寸問(wèn)題41</p><p>  5.1.5 模擬器到真機(jī)41</p><p>  5.2 尚未解決的問(wèn)題41</p><p>  第六章 GPS手機(jī)發(fā)展前景展望43</p><p><b&

18、gt;  第七章 結(jié)論44</b></p><p><b>  致謝45</b></p><p><b>  參考文獻(xiàn)46</b></p><p><b>  引言</b></p><p>  手機(jī)是人們?nèi)粘I钪惺褂梅浅nl繁的通信工具,雖然現(xiàn)在其費(fèi)用比有線電

19、話高,但是其隨時(shí)隨地的溝通優(yōu)勢(shì),使人們擺脫了電話線路的束縛。目前在大部分地區(qū),幾乎人手一部或幾部手機(jī),正是由于手機(jī)的高普及率,才使得無(wú)線移動(dòng)商務(wù)迅速普及和發(fā)展。</p><p>  JAVA技術(shù)已經(jīng)從一種最初用來(lái)編寫(xiě)與硬件無(wú)關(guān)的嵌入式系統(tǒng)的編程語(yǔ)言變成了一種與廠商無(wú)關(guān)、與硬件無(wú)關(guān)的健壯的服務(wù)器端技術(shù),它使整個(gè)企業(yè)界可以全面發(fā)掘以Web為核心的應(yīng)用程序的巨大潛力。隨著JAVA技術(shù)的不斷更新與提高,特別是J2ME技術(shù)

20、的出現(xiàn),使得手機(jī)應(yīng)用程序越來(lái)越成為人們關(guān)注的焦點(diǎn)。J2ME技術(shù)目前最流行的就是在制作手機(jī)應(yīng)用程序方面,JAVA手機(jī)的出現(xiàn)使得這一技術(shù)更有它的用武之地,發(fā)揮著靈活、輕便、快捷的作用。</p><p>  本文就將詳細(xì)的介紹J2ME這一技術(shù)在手機(jī)軟件制作方面的具體過(guò)程以及其重要的作用。</p><p><b>  第一章 緒論</b></p><p&g

21、t;  本章主要介紹本文系統(tǒng)研究的背景、手機(jī)GPS導(dǎo)航發(fā)展現(xiàn)狀以及課題研究的主要內(nèi)容和意義。</p><p>  1.1 課題研究背景</p><p>  1967年加拿大測(cè)量學(xué)家R.T.Tomlinso提出并建立了世界上第一個(gè)實(shí)用的地理信息系統(tǒng),隨后從1973年美國(guó)國(guó)防部開(kāi)始制定全球定位系統(tǒng)(Global Positioning System:GPS)計(jì)劃后,歷經(jīng)了整整二十年的時(shí)間,才

22、架構(gòu)起二十四顆衛(wèi)星(二十一顆工作衛(wèi)星,三顆備用衛(wèi)星)的全球GPS網(wǎng)絡(luò),能提供全方位的即時(shí)導(dǎo)航和定位能力。這二十四顆衛(wèi)星布置完之初,一直都是由軍方或國(guó)家量測(cè)單位在使用這套系統(tǒng),即使對(duì)民間開(kāi)放,定位的精確度也相當(dāng)有限,但隨著技術(shù)的發(fā)展和市場(chǎng)民情的需求,GPS開(kāi)始向民間滲透,現(xiàn)在已在個(gè)人化、生活化、大眾化的市場(chǎng)取得了一席之地。</p><p>  隨著移動(dòng)通信技術(shù)的發(fā)展,我國(guó)移動(dòng)用戶數(shù)量也在快速增長(zhǎng)。2007年我國(guó)的手

23、機(jī)用戶約為5.40億,而根據(jù)中國(guó)三大移動(dòng)運(yùn)營(yíng)商公布的數(shù)據(jù)顯示,截至2011年8月底,中國(guó)手機(jī)用戶總數(shù)卻已達(dá)9.2726億戶,手機(jī)上網(wǎng)用戶已超3億戶。與此同時(shí)人們對(duì)手機(jī)所賦予的功能也已經(jīng)擴(kuò)展到空間定位、分布式計(jì)算等高端領(lǐng)域。人們的社會(huì)活動(dòng)等也越來(lái)越希望突破時(shí)間和空間的約束,這使得手機(jī)上GPS應(yīng)用的必然性。目前中高端智能手機(jī)都已經(jīng)裝載了GPS導(dǎo)航模塊,手機(jī)GPS導(dǎo)航領(lǐng)域的發(fā)展前途一片光明。</p><p>  1.2

24、 手機(jī)GPS導(dǎo)航發(fā)展現(xiàn)狀</p><p>  目前手機(jī)GPS導(dǎo)航模式主要有兩種,一種是本地模式,另一種則是客戶端/服務(wù)器模式。</p><p>  本地模式,即手機(jī)利用自身存儲(chǔ)能力將空間地圖保存到手機(jī)里,定位導(dǎo)航時(shí)只需要調(diào)用本地?cái)?shù)據(jù)即可。但這種方式對(duì)手機(jī)的存儲(chǔ)空間和數(shù)據(jù)處理能力都有很大的要求,使得導(dǎo)航系統(tǒng)的分析功能和服務(wù)不能過(guò)于復(fù)雜,地圖數(shù)據(jù)也不能太大,導(dǎo)致GPS應(yīng)用服務(wù)在一般手機(jī)上受到

25、限制。當(dāng)然本地模式的好處就是不產(chǎn)生GPRS流量費(fèi),可以說(shuō)是絕對(duì)的免費(fèi)了。未來(lái)手機(jī)存儲(chǔ)能力和數(shù)據(jù)處理能力的提升,這種方式GPS導(dǎo)航應(yīng)該會(huì)得到廣泛應(yīng)用。</p><p>  客戶端/服務(wù)器模式則是將地圖信息的相關(guān)數(shù)據(jù)保存在服務(wù)器端,手機(jī)通過(guò)HTTP等協(xié)議請(qǐng)求服務(wù)器來(lái)獲取相關(guān)的地圖數(shù)據(jù)信息。這種模式使得手機(jī)客戶端的壓力大大減小,不必再存儲(chǔ)龐大的地圖數(shù)據(jù)信息,可以將手機(jī)的數(shù)據(jù)處理能力用來(lái)提升用戶體驗(yàn)等更重要的方面。這樣一

26、種模式對(duì)手機(jī)網(wǎng)絡(luò)訪問(wèn)速度有一定要求以及會(huì)產(chǎn)生GPRS流量費(fèi),但以目前來(lái)看這已經(jīng)不是問(wèn)題,一般手機(jī)的網(wǎng)絡(luò)訪問(wèn)速度都是能達(dá)到要求,GPRS流量費(fèi)用戶也應(yīng)該可以接受的,相當(dāng)于發(fā)幾個(gè)短信罷了。</p><p>  目前的地圖數(shù)據(jù)信息描述和表現(xiàn)主要有兩種方式:柵格圖片和矢量圖片。柵格電子地圖是各比例尺的紙介質(zhì)地形圖和各種專業(yè)使用的彩圖的數(shù)字化產(chǎn)品,就是每幅圖片經(jīng)掃描、幾何糾正及色彩校正后,形成在內(nèi)容、幾何精度和色彩上與地形

27、圖保持一致的柵格數(shù)據(jù)文件。矢量地圖是每幅經(jīng)掃描、幾何糾正的影像圖,是對(duì)一種或多種地圖要素進(jìn)行矢量化形成的一種矢量化數(shù)據(jù)文件,是一種更為方便的放大、漫游、查詢、檢查、量測(cè)、疊加地圖。這兩種實(shí)現(xiàn)各有優(yōu)缺點(diǎn),柵格電子地圖生成比較方便,圖像比較細(xì)致,和人們?nèi)粘J褂玫牡貓D類似,容易被用戶接受。但是,柵格電子地圖數(shù)據(jù)量比較大,存儲(chǔ)不方便,放大過(guò)程中會(huì)產(chǎn)生失真,數(shù)據(jù)不是很準(zhǔn)確,很難進(jìn)行全局或者局部校正,更新起來(lái)也比較費(fèi)事。矢量電子地圖生成相對(duì)費(fèi)事,但

28、是數(shù)據(jù)經(jīng)過(guò)壓縮,結(jié)構(gòu)緊湊,數(shù)據(jù)量小,冗余度低;有利于網(wǎng)絡(luò)和檢索分析;圖形顯示質(zhì)量好,精度高;但數(shù)據(jù)結(jié)構(gòu)復(fù)雜,多邊形疊加分析比較困難。矢量電子地圖可以隨意縮放,縮放過(guò)程中不會(huì)失真,可以進(jìn)行全局或者局部校正,更新起來(lái)也很方便。</p><p>  Google 靜態(tài)地圖API將地圖以圖片形式展現(xiàn),使用http接口進(jìn)行圖片地圖的創(chuàng)建,無(wú)需使用java腳本實(shí)現(xiàn),適用于手機(jī)或定制客戶端系統(tǒng)的服務(wù)調(diào)用。開(kāi)發(fā)者無(wú)需再考慮地圖數(shù)

29、據(jù)信息的制作、傳輸、存儲(chǔ)等,開(kāi)發(fā)者只需要通過(guò)HTTP請(qǐng)求,便可以獲取想要的地圖圖片。通過(guò)靜態(tài)地圖調(diào)用API,可以進(jìn)一步增加電子地圖的應(yīng)用范圍,同時(shí)也使獲得地圖的方法變得更為簡(jiǎn)潔直接。本文系統(tǒng)也將采用此方法進(jìn)行GPS導(dǎo)航系統(tǒng)的開(kāi)發(fā)。</p><p>  1.3 課題主要內(nèi)容和意義</p><p>  目前市場(chǎng)上手機(jī)GPS導(dǎo)航較為成熟的系統(tǒng)都為本地模式的GPS導(dǎo)航系統(tǒng),將地圖數(shù)據(jù)信息下載到用

30、戶的手機(jī)自身存儲(chǔ)空間,具有響應(yīng)快速的優(yōu)點(diǎn),但卻過(guò)于消耗手機(jī)的存儲(chǔ)空間,又手機(jī)處理能力有限,使得做出來(lái)的導(dǎo)航軟件不能夠處理過(guò)于復(fù)雜的分析和服務(wù),應(yīng)用十分受限。因此客戶端/服務(wù)器模式的研究與開(kāi)發(fā)成了近年來(lái)的研究熱點(diǎn)。</p><p>  Google公司推出的Google靜態(tài)地圖API為手機(jī)開(kāi)發(fā)者提供了通過(guò)HTTP請(qǐng)求便能得到想要地圖的服務(wù)。開(kāi)發(fā)者只需要將定位的信息以及想獲取到地圖圖片的相關(guān)信息通過(guò)URL傳遞給Goo

31、gle服務(wù)器,便可以得到相應(yīng)的地圖圖片。Google公司的這項(xiàng)服務(wù)完全符合客戶端/服務(wù)器模式,用戶不需要存儲(chǔ)地圖數(shù)據(jù)到手機(jī)自身存儲(chǔ)里,開(kāi)發(fā)者也不需要過(guò)多設(shè)備軟件制作復(fù)雜的柵格地圖或矢量地圖,只需要掌握相關(guān)API的使用便可高效地獲取想要的地圖,完全可以滿足普通用戶的GPS導(dǎo)航需求。</p><p>  本文系統(tǒng)也將采用Google靜態(tài)地圖API,在滿足一般手機(jī)用戶基準(zhǔn)上,利用J2ME的JSR179規(guī)范為大家?guī)?lái)一款

32、手機(jī)GPS導(dǎo)航軟件。該軟件主要實(shí)現(xiàn)了實(shí)時(shí)定位、興趣點(diǎn)相關(guān)操作、路線規(guī)劃等,也可以作為利用Google靜態(tài)地圖API進(jìn)行手機(jī)GPS導(dǎo)航軟件開(kāi)發(fā)的其他手機(jī)開(kāi)發(fā)者參考。</p><p>  第二章 相關(guān)技術(shù)概覽</p><p>  本章主要介紹本文系統(tǒng)用到的相關(guān)技術(shù)知識(shí),包括位置服務(wù)、移動(dòng)地理信息系統(tǒng)、J2ME平臺(tái)的簡(jiǎn)介、J2ME的JSR179開(kāi)發(fā)包介紹、Google API簡(jiǎn)介以及做路線規(guī)劃時(shí)

33、的技術(shù)介紹和選擇。</p><p>  2.1 基于位置的服務(wù)</p><p>  基于位置的服務(wù)(Location Based Service,LBS),它是通過(guò)電信移動(dòng)運(yùn)營(yíng)商的無(wú)線電通訊網(wǎng)絡(luò)(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動(dòng)終端用戶的位置信息(地理坐標(biāo),或大地坐標(biāo)),在GIS(Geographic Information System,地理信息系統(tǒng))平臺(tái)的支

34、持下,為用戶提供相應(yīng)服務(wù)的一種增值業(yè)務(wù)。</p><p>  2.1.1 基于位置服務(wù)的應(yīng)用范圍</p><p>  基于位置的服務(wù)(Location Based Service,LBS)的應(yīng)用非常廣泛,可以滲透到任何行業(yè),為任何群體提供服務(wù)。LBS的應(yīng)用服務(wù)可以歸為以下幾類:</p><p><b>  (1)個(gè)人應(yīng)用領(lǐng)域</b></

35、p><p>  個(gè)人應(yīng)用領(lǐng)域,LBS主要服務(wù)有:定位、路徑規(guī)劃、查找目標(biāo)、旅游導(dǎo)航、基于定位的一些游戲等。最常用的是為游客提供定位服務(wù),為初到某地的用戶提供路徑規(guī)劃,為用戶提供公交路線,為用戶提供興趣點(diǎn)的搜索,如酒店旅館等的位置。</p><p><b>  (2)公共服務(wù)領(lǐng)域</b></p><p>  LBS在公共服務(wù)領(lǐng)域中主要提供公共安全服務(wù)

36、應(yīng)用和智能交通管理及引導(dǎo)。公共安全服務(wù)主要涉及危機(jī)情況下當(dāng)事人位置的準(zhǔn)確掌握,為救護(hù)、消防、公安等緊急服務(wù)提供快速準(zhǔn)確的定位指引,對(duì)保障人民生命產(chǎn)生安全起到了至關(guān)重要的作用。LBS在智能交通管理領(lǐng)域也對(duì)緩解城市的交通壓力起到了重要的作用,通過(guò)監(jiān)控道路段的路況和車(chē)流量讓駕車(chē)人員能即時(shí)了解路段交通狀況,從而有效地選擇行車(chē)路線。</p><p><b>  (2)商業(yè)應(yīng)用領(lǐng)域</b></p&

37、gt;<p>  在商業(yè)領(lǐng)域,LBS可以為用戶提供周邊商業(yè)信息,如附近餐館的近期促銷(xiāo)信息,旅館酒店等的打折優(yōu)惠信息。LBS為物流、安全、交通、城市規(guī)劃等傳統(tǒng)產(chǎn)生提供了精確的位置信息服務(wù),在商業(yè)上的應(yīng)用也越來(lái)越重要,發(fā)展前景很光明。</p><p>  2.1.2 基于位置服務(wù)的定位方法</p><p>  目前,基于位置服務(wù)的方法主要有三種:基于移動(dòng)終端衛(wèi)星定位系統(tǒng)的GPS

38、定位方法、基于移動(dòng)網(wǎng)絡(luò)的基站定位方法、無(wú)線輔助衛(wèi)星定位系統(tǒng)的A-GPS定位方法。</p><p>  GPS定位是借助全球定位系統(tǒng)的衛(wèi)星體系來(lái)實(shí)現(xiàn)的。該方法不需要手機(jī)連接移動(dòng)網(wǎng)絡(luò),而依靠手機(jī)自身的GPS定位模塊獲取衛(wèi)星信號(hào),從而達(dá)到定位的效果。但在衛(wèi)星信號(hào)較差的地區(qū)性能和可能性都會(huì)急劇地下降,其初始化定位速度相對(duì)較慢。原理圖如下:</p><p>  圖2-1 GPS定位原理圖</p

39、><p>  基站定位依懶移動(dòng)信號(hào)發(fā)射架和移動(dòng)蜂窩基站的信號(hào)轉(zhuǎn)發(fā),移動(dòng)電話測(cè)量不同基站下行導(dǎo)頻的TOA(Time of Arrival,到達(dá)時(shí)刻)或TDOA(Time Difference of Arrival,到達(dá)的時(shí)間差),根據(jù)該測(cè)量結(jié)果并結(jié)合基站的坐標(biāo),一般采用三角公式估計(jì)算法,就能夠計(jì)算出移動(dòng)電話的位置。實(shí)際的位置估計(jì)算法需要考慮多基站(3個(gè)或3個(gè)以上)定位的情況,因此算法要復(fù)雜很多。一般而言,移動(dòng)臺(tái)測(cè)量的基

40、站數(shù)目越多,測(cè)量精度越高,定位性能改善越明顯。原理圖如下:</p><p>  圖2-2 基站定位原理圖</p><p>  A-GPS輔助定位利用峰窩/無(wú)線網(wǎng)絡(luò)提供輔助信息來(lái)幫助衛(wèi)星系統(tǒng)作為參考點(diǎn)進(jìn)行定位,并不對(duì)位置信息進(jìn)行計(jì)算,而是將GPS的位置信息數(shù)據(jù)傳給移動(dòng)通信網(wǎng)絡(luò),由網(wǎng)絡(luò)的定位服務(wù)器進(jìn)行位置計(jì)算,同時(shí)移動(dòng)網(wǎng)絡(luò)按照GPS的參考網(wǎng)絡(luò)所產(chǎn)生的輔助數(shù)據(jù),如差分校正數(shù)據(jù)、衛(wèi)星運(yùn)行狀態(tài)等傳遞

41、給手機(jī),并從數(shù)據(jù)庫(kù)中查出手機(jī)的近似位置和小區(qū)所在的位置信息傳給手機(jī),并從數(shù)據(jù)庫(kù)中查出手機(jī)的近似位置和小區(qū)所在的位置信息傳給手機(jī),這時(shí)手機(jī)可以很快捕捉到GPS信號(hào),這樣首次捕獲時(shí)間將大大減小,一般僅需幾秒的時(shí)間。不需像GPS的首次捕獲時(shí)間可能要2-3分鐘時(shí)間,而精度也僅為幾米高于GPS的精度。原理圖如下:</p><p>  圖2-3 A-GPS定位原理圖</p><p>  2.2 移動(dòng)

42、地理信息系統(tǒng)</p><p>  移動(dòng)地理信息系統(tǒng)(Mobile Geospatial Information System)的出現(xiàn)使人們?cè)诼糜沃邢硎茏灾髀糜蔚脑竿靡詫?shí)現(xiàn)。Mobile GIS是GIS從靜態(tài)走向動(dòng)態(tài)環(huán)境的重大發(fā)展,通過(guò)綜合運(yùn)用GPS的精確定位技術(shù)、便攜移動(dòng)設(shè)備(如PocketPC、手機(jī))、無(wú)線Internet接入和GIS的空間信息處理能力,使得系統(tǒng)能夠?qū)崟r(shí)地獲取、存儲(chǔ)、更新、處理、分析和顯示地理

43、信息,在現(xiàn)在乃至未來(lái)將發(fā)揮出巨大的潛力。</p><p>  移動(dòng)GIS(Mobile GIS)是建立在移動(dòng)計(jì)算環(huán)境、有限處理能力的移動(dòng)終端條件下,提供移動(dòng)中的、分布式的、隨遇性的移動(dòng)地理信息服務(wù)的GIS,是一個(gè)集GIS、GPS、移動(dòng)通信(GSM/GPRS/CD2MA)三大技術(shù)于一體的系統(tǒng)。它通過(guò)GIS完成空間數(shù)據(jù)管理和分析,GPS進(jìn)行定位和跟蹤,利用PDA完成數(shù)據(jù)獲取功能,借助移動(dòng)通信技術(shù)完成圖開(kāi)、文字、聲音等

44、數(shù)據(jù)的傳輸。</p><p>  與傳統(tǒng)的GIS相比,移動(dòng)GIS的體系結(jié)構(gòu)略微復(fù)雜些,因?yàn)樗髮?shí)時(shí)地將空間信息傳輸給服務(wù)器。移動(dòng)GIS的體系結(jié)構(gòu)主要由三部分組成:客戶端部分、服務(wù)器部分和數(shù)據(jù)源部分,分別承載在表現(xiàn)層、中間層和數(shù)據(jù)層。表現(xiàn)層是客戶端的承載層,直接與用戶打交道,是向用戶提供GIS服務(wù)的窗口。該層支持各種終端,包括PC機(jī),為移動(dòng)GIS提供更新支持。數(shù)據(jù)層是移動(dòng)GIS各類數(shù)據(jù)的集散地,確保GIS功能實(shí)現(xiàn)

45、的基礎(chǔ)和支撐。中間層是移動(dòng)GIS的核心部分,系統(tǒng)的服務(wù)器都集中在該層,主要負(fù)責(zé)傳輸和處理空間數(shù)據(jù)信息,執(zhí)行移動(dòng)GIS的功能等。包括Internet、Web Server、Map Server等組成部分。</p><p>  2.3 J2ME簡(jiǎn)介</p><p>  J2ME的設(shè)計(jì)初衷是運(yùn)行在不同的嵌入式系統(tǒng)和消費(fèi)電子設(shè)備上。為了適應(yīng)不同的設(shè)備,J2ME首先對(duì)不同的設(shè)備進(jìn)行了抽象。<

46、/p><p>  J2ME在設(shè)計(jì)規(guī)范時(shí),遵循“對(duì)于各種不同的設(shè)備設(shè)定一個(gè)單一的開(kāi)發(fā)系統(tǒng)是沒(méi)有意義的事”這一基本原則。因此,J2ME先將所有的嵌入式設(shè)備大體上分為兩種:一種是運(yùn)算能力有限且電力供應(yīng)也有限的嵌入式設(shè)備(如PDA和手機(jī));另一種是運(yùn)算能力相對(duì)較佳并在電力供應(yīng)上相對(duì)比較充足的嵌入式裝置(如冷氣機(jī)、電冰箱和機(jī)頂盒)。Java引入了一個(gè)Configuration的概念,把上述運(yùn)算功能有限、電力有限的嵌入式設(shè)備定義

47、在CLDC規(guī)范中,而將另一種裝置定義在CDC(Connected Device Configuration,連接設(shè)備配置)規(guī)范中。也就是說(shuō),J2ME利用Configuration的概念把所有的嵌入式設(shè)備區(qū)分成兩種抽象的類別。</p><p>  Configuration可以當(dāng)作是J2ME對(duì)于兩種類型嵌入式設(shè)備的規(guī)范。在這些規(guī)范中,定義了這些裝置至少要符合的運(yùn)算能力、供電能力和內(nèi)存大等規(guī)范,同時(shí)也定義了一組在這些

48、裝置上執(zhí)行的Java程序所能用的基本類庫(kù)。在這些規(guī)范中所定義的基本類庫(kù)為Java核心類庫(kù)的子集以及該類別設(shè)備特性相符的擴(kuò)充類庫(kù)。就CLDC規(guī)范而言,能支持的核心類庫(kù)有java.lang.*、java.io.*和java.util.*,能支持的擴(kuò)充類庫(kù)是java.microedition.io.*。</p><p>  區(qū)分出兩種主要的Configuration后,J2ME接著定義了框架(Profile)。Prof

49、ile是架構(gòu)在Configuration之上的規(guī)范。之所以有Profile的概念,是為了要更明確地區(qū)分出各種嵌入式設(shè)備上Java程序該如何開(kāi)發(fā)、具有哪些功能。因此,Profile中定義了與特定嵌入式設(shè)備非常相關(guān)的擴(kuò)充類庫(kù)。當(dāng)然,這些擴(kuò)充類庫(kù)也是建立在底層Configuration所定義的核心類庫(kù)基礎(chǔ)之上的。</p><p>  2.3.1 J2ME架構(gòu)</p><p>  J2ME架構(gòu)的

50、模塊化設(shè)計(jì)使應(yīng)用程序可以靈活適應(yīng)小型計(jì)算設(shè)備的限制。J2ME架構(gòu)沒(méi)有替代小型計(jì)算設(shè)備的操作系統(tǒng)。相反,J2ME架構(gòu)由位于原生操作系統(tǒng)之上的多層軟件組成,這些軟件共同稱為“連接有限設(shè)備配置”(Connected Limited Device Configuration, CLDC)。安裝在操作系統(tǒng)之上的CLDC形成了小型計(jì)算設(shè)備的運(yùn)行時(shí)環(huán)境。</p><p>  J2ME架構(gòu)由3個(gè)軟件層組成:第一層是包括在內(nèi)的配置

51、層,這個(gè)層次直接與原生操作系統(tǒng)進(jìn)行交互。配置層還處理profile和JVM之間的交互。第二層是profile層,由小型計(jì)算設(shè)備的應(yīng)用程序編程接口(API)的最小集合組成。第三層是Mobile Information Device Profile( MIDP )層。MIDP層由用戶網(wǎng)絡(luò)連接、永久存儲(chǔ)和用戶界面的java API組成。它還能夠訪問(wèn)CLDC庫(kù)和MIDP庫(kù)。</p><p>  2.3.2 JVM (

52、虛擬機(jī) )</p><p>  JVM是專門(mén)為微型電子設(shè)備與資源受限設(shè)備如:手機(jī)、尋呼機(jī)、移動(dòng)互聯(lián)網(wǎng)設(shè)備、家用微電子設(shè)備等設(shè)計(jì)的一種輕便、緊湊的JAVA虛擬機(jī)。</p><p>  JVM可以為微型電子設(shè)備提供一個(gè)完整的JAVA運(yùn)行環(huán)境,除了一些微型設(shè)備所必需的適當(dāng)?shù)墓δ苡兴煌猓怯蒍AVA虛擬機(jī)規(guī)范定義的真實(shí)的JAVA虛擬機(jī)。它是專門(mén)為那些受資源限制,只有幾百K字節(jié)內(nèi)存的微型設(shè)備設(shè)

53、計(jì)的。</p><p>  JVM起初是由SUN微系統(tǒng)實(shí)驗(yàn)室為一個(gè)名叫“Spotless”的項(xiàng)目創(chuàng)建的。它的目標(biāo)是為資源受限制的Palm(是目前較為流行的掌上電腦操作系統(tǒng))可連接的電子設(shè)備,實(shí)現(xiàn)一個(gè)java虛擬機(jī)。</p><p>  基于上述原因,JVM具有以下幾個(gè)特點(diǎn):</p><p>  (1)小,僅具有40KB至80KB的靜態(tài)內(nèi)存。</p>&

54、lt;p><b>  (2)輕便、精巧。</b></p><p>  (3)模塊化并可定制。</p><p>  (4)盡可能完全緊湊的完成設(shè)計(jì)目的。</p><p>  2.3.3 MIDP( 移動(dòng)信息設(shè)備簡(jiǎn)表 )</p><p>  MIDP是專門(mén)為互聯(lián)受限設(shè)備配置設(shè)計(jì)的,它為移動(dòng)設(shè)備提供了一套API集合,M

55、IDP包含用戶界面類、持久存儲(chǔ)功能與網(wǎng)絡(luò)功能。它同時(shí)也包括一個(gè)供用戶下載新應(yīng)用到終端設(shè)備的標(biāo)準(zhǔn)運(yùn)行環(huán)境。運(yùn)行在MIDP下的小應(yīng)用程序叫做MIDlet移動(dòng)設(shè)備小應(yīng)用程序,它與Applet類似。MIDP要求平臺(tái)設(shè)備提供一個(gè)機(jī)制用來(lái)存儲(chǔ)簡(jiǎn)單的數(shù)據(jù)記錄,通過(guò)正常的平臺(tái)事件,比如重新啟動(dòng)和電池更新維護(hù)系統(tǒng)的完整性。</p><p>  MIDP是以SUN、Motorola、Nokia為中心的MIDPEG組織(Mobile

56、Information Profile Expert Group)所制訂出來(lái)使用在CLDC上的Profile,是以能使用在移動(dòng)電話、雙向?qū)χv機(jī)、可無(wú)線通信的PDA(個(gè)人數(shù)字助理)上面為前提設(shè)計(jì)出來(lái)的。另外,像日本國(guó)內(nèi)的NTT DoCoMo、J-PHONE、KDDI等電信商與移動(dòng)電話制造商也都曾參與了MIDPEG。</p><p>  MIDP是在CLDC的功能上附加提供適合目標(biāo)設(shè)備用的GUI與事件處理功能。這樣

57、一來(lái),就可以當(dāng)成MIDP應(yīng)用程序(MIDlet)來(lái)運(yùn)行了。</p><p>  MIDP由于是由多個(gè)企業(yè)所共同策劃出來(lái)的開(kāi)放標(biāo)準(zhǔn),因此主要的移動(dòng)電話制造商也會(huì)制造出大量的對(duì)應(yīng)機(jī)種。也就是說(shuō),以MIDP為基準(zhǔn)所制作出來(lái)的應(yīng)用程序,也將可以在流通于市面上的移動(dòng)電話上執(zhí)行。</p><p>  另外,MIDP不僅限于移動(dòng)電話,也已經(jīng)被移植到PDA Palm OS上,而以MIDP for Palm

58、 OS的名字來(lái)稱呼(與KJava是不同的)。在不使用各電信商的擴(kuò)展API的時(shí)候,制作給移動(dòng)電話用的MIDlet也將可以使用在Palm OS上面。由于未來(lái)MIDP也將會(huì)搭載到不同設(shè)備之上,也由于其兼容性高,只要寫(xiě)過(guò)一次程序,就可以在其他移動(dòng)電話或是移動(dòng)電話以外的設(shè)備上執(zhí)行;而這也就是它最大的好處。</p><p>  2.4 JSR179開(kāi)發(fā)包</p><p>  Java? 2 Plat

59、form, Micro Edition (J2ME?) (JSR-179參考http://www.jcp.org/aboutJava/communityprocess/final/jsr179/)的定位API在S60和Series 40第三版中都提到,這是一個(gè)可以在大多數(shù)J2ME中使用的可選包。API需要的最低平臺(tái)為Connected LimitedDevice Configuration (CLDC) 1.1,因?yàn)锳PI需要數(shù)學(xué)浮點(diǎn)運(yùn)

60、算的支持。</p><p>  S60和Series 40同樣支持MM API,詳情請(qǐng)參考Location API for J2ME?定位API的目的就是開(kāi)發(fā)具有定位功能的設(shè)備的應(yīng)用程序。根據(jù)設(shè)備的自然情況,API提供利用設(shè)備的方法。另外,定位API是很多易用的類和接口的壓縮包,其在開(kāi)發(fā)移動(dòng)應(yīng)用程序的時(shí)候具有以下三個(gè)特點(diǎn):</p><p>  (1)獲取設(shè)備的位置信息</p>

61、<p>  (2)創(chuàng)建、編輯、存儲(chǔ)、銷(xiāo)毀陸標(biāo)</p><p>  (3)獲取設(shè)備的定位</p><p>  定位API首先需要連接一個(gè)定位方法,利用定位方法產(chǎn)生定位對(duì)象,每種定位方法都不一樣。比如,各種方法所需要的時(shí)間都不一樣,每種方法的精確度也不一樣。最常用的方法有基于設(shè)備(比如GPS,這種方法基于衛(wèi)星全球定位系統(tǒng))、基于網(wǎng)絡(luò)(比如蜂窩,這種方法中網(wǎng)絡(luò)決定了位置),還有混合方

62、法(比如A-GPS方法,這種方法利用網(wǎng)絡(luò)信息來(lái)加速定位)。</p><p>  下面的圖表顯示了API MIDLet使用GPS定位方法來(lái)定位的結(jié)構(gòu)。對(duì)MIDLet在SDK環(huán)境中檢測(cè)后,還必須在真實(shí)的環(huán)境中進(jìn)行檢測(cè),來(lái)確保正確運(yùn)行。真實(shí)的環(huán)境意味著在支持移動(dòng)定位的設(shè)備中使用API定位。</p><p>  圖2-4 定位API使用GPS定位模型圖</p><p>  

63、2.5 Google API簡(jiǎn)介</p><p>  本文軟件中只用到兩個(gè)Google API,分別是Google Static Maps API和Google Directions API。</p><p>  Google Static Maps API,通過(guò)網(wǎng)址返回圖像(GIF、PNG或JPEG)來(lái)響應(yīng)HTTP請(qǐng)求。您可以為每個(gè)請(qǐng)求指定地圖的位置、圖像的大小、縮放的級(jí)別、地圖的類型

64、以及可選擇標(biāo)記在地圖各個(gè)位置上的放置。些外,您還可以使用字母字符為您的標(biāo)記制作標(biāo)簽,以便在“關(guān)鍵字”中引用這些標(biāo)記。</p><p>  Google Directions API,是一種使用 HTTP 請(qǐng)求計(jì)算多個(gè)位置間路線的服務(wù)。路線可以以文本字符串(如“Chicago, IL”或“Darwin, NSW, Australia”)或緯度/經(jīng)度坐標(biāo)的形式指定起點(diǎn)、目的地和路標(biāo)。Google Directions

65、 API 可以使用一系列路標(biāo)傳回多段路線。此服務(wù)通常適用于計(jì)算路線的靜態(tài)(事先已知)地址,以便將應(yīng)用程序內(nèi)容放置在地圖上;但此服務(wù)不適用于對(duì)用戶輸入的內(nèi)容進(jìn)行實(shí)時(shí)響應(yīng)。有關(guān)動(dòng)態(tài)路線計(jì)算(例如,在用戶界面元素中),請(qǐng)參見(jiàn) JavaScript API V3 Directions Service 文檔。計(jì)算路線是一種耗時(shí)、耗資源的任務(wù)。如果可能,系統(tǒng)會(huì)使用此處介紹的服務(wù)提前計(jì)算已知地址,并將結(jié)果存儲(chǔ)在您自己設(shè)計(jì)的臨時(shí)緩存中。</p&g

66、t;<p>  2.6 路徑規(guī)劃的技術(shù)選擇</p><p>  路徑規(guī)劃在導(dǎo)航系統(tǒng)軟件中是必不可少的一部分,主要用于為用戶提供起始位置到目的地的最優(yōu)路徑或最短路徑。下面介紹路徑規(guī)劃中的兩種方法,以及本文最終選擇的方法。</p><p>  2.6.1 A算法實(shí)現(xiàn)最短路徑搜索</p><p>  A*搜尋算法,俗稱A星算法,作為啟發(fā)式搜索算法中的一種

67、,這是一種在圖形平面上,有多個(gè)節(jié)點(diǎn)的路徑,求出最低通過(guò)成本的算法。常用于游戲中的NPC的移動(dòng)計(jì)算,或線上游戲的BOT的移動(dòng)計(jì)算上。該算法像Dijkstra算法一樣,可以找到一條最短路徑;也像BFS一樣,進(jìn)行啟發(fā)式的搜索。</p><p>  A*算法最為核心的部分,就在于它的一個(gè)估值函數(shù)的設(shè)計(jì)上:f(n)=g(n)+h(n);其中f(n)是每個(gè)可能試探點(diǎn)的估值,它有兩部分組成:一部分,為g(n),它表示從起始搜索

68、點(diǎn)到當(dāng)前點(diǎn)的代價(jià)(通常用某結(jié)點(diǎn)在搜索樹(shù)中的深度來(lái)表示)。另一部分,即h(n),它表示啟發(fā)式搜索中最為重要的一部分,即當(dāng)前結(jié)點(diǎn)到目標(biāo)結(jié)點(diǎn)的估值,h(n)設(shè)計(jì)的好壞,直接影響著具有此種啟發(fā)式函數(shù)的啟發(fā)式算法的是否能稱為A*算法。</p><p>  一種具有f(n)=g(n)+h(n)策略的啟發(fā)式算法能成為A*算法的充分條件是:</p><p>  1、搜索樹(shù)上存在著從起始點(diǎn)到終點(diǎn)的最優(yōu)路徑。

69、</p><p>  2、問(wèn)題域是有限的。</p><p>  3、所有結(jié)點(diǎn)的子結(jié)點(diǎn)的搜索代價(jià)值>0。</p><p>  4、h(n)=<h*(n) (h*(n)為實(shí)際問(wèn)題的代價(jià)值)。</p><p>  當(dāng)此四個(gè)條件都滿足時(shí),一個(gè)具有f(n)=g(n)+h(n)策略的啟發(fā)式算法能成為A*算法,并一定能找到最優(yōu)解。</p&

70、gt;<p>  對(duì)于一個(gè)搜索問(wèn)題,顯然,條件1,2,3都是很容易滿足的,而條件4: h(n)<=h*(n)是需要精心設(shè)計(jì)的,由于h*(n)顯然是無(wú)法知道的,所以,一個(gè)滿足條件4的啟發(fā)策略h(n)就來(lái)的難能可貴了。</p><p>  不過(guò),對(duì)于圖的最優(yōu)路徑搜索和八數(shù)碼問(wèn)題,有些相關(guān)策略h(n)不僅很好理解,而且已經(jīng)在理論上證明是滿足條件4的,從而為這個(gè)算法的推廣起到了決定性的作用。</

71、p><p>  并且h(n)距離h*(n)的呈度不能過(guò)大,否則h(n)就沒(méi)有過(guò)強(qiáng)的區(qū)分能力,算法效率并不會(huì)很高。對(duì)一個(gè)好的h(n)的評(píng)價(jià)是:h(n)在h*(n)的下界之下,并且盡量接近h*(n)。</p><p>  2.6.2 Google Directions API提供服務(wù)</p><p>  Google Directions API主要服務(wù)就是為了計(jì)算路線。

72、客戶端發(fā)送路線請(qǐng)求,服務(wù)器根據(jù)請(qǐng)求,以XML或JSON形式輸出給客戶端。</p><p>  Google Directions API 請(qǐng)求是以下形式的 HTTP 網(wǎng)址:http://maps.google.com/maps/api/directions/output?parameter,其中,output 可能是以下任何一個(gè)值:</p><p>  (1)json(建議)表示以 Jav

73、aScript 對(duì)象表示法 (JSON) 的形式輸出</p><p>  (2)xml 表示以 XML 的形式輸出</p><p>  而parameter則為請(qǐng)求的參數(shù),有些參數(shù)必填,而有些參數(shù)則是可選參數(shù)。根據(jù)網(wǎng)址的標(biāo)準(zhǔn),所有參數(shù)均使用字符&分隔。下面枚舉了這些參數(shù)及其可能的值。</p><p>  Google Directions API 使用以下網(wǎng)

74、址參數(shù)定義路線請(qǐng)求:</p><p>  (1)origin(必填)- 希望根據(jù)其計(jì)算路線的地址或文本緯度/經(jīng)度值。</p><p>  (2)destination(必填)- 希望根據(jù)其計(jì)算路線的地址或文本緯度/經(jīng)度值。</p><p>  (3)mode(可選,默認(rèn)為 driving)- 指定計(jì)算路線時(shí)使用的出行方式。在出行方式中指定有效的值。</p>

75、;<p>  (4)waypoints(可選)指定一組路標(biāo)。路標(biāo)通過(guò)經(jīng)過(guò)指定的位置可以改變路線??梢砸跃暥?經(jīng)度坐標(biāo)或?qū)⑦M(jìn)行地址解析的地址的形式指定路標(biāo)。</p><p>  (5)alternatives(可選)設(shè)置為 true 時(shí),可以指定路線服務(wù)可以在響應(yīng)中提供多條備選路線。請(qǐng)注意,提供備選路線可能增加服務(wù)器的響應(yīng)時(shí)間。</p><p>  (6)avoid(可選)指示

76、計(jì)算的路線應(yīng)避開(kāi)指定的地圖項(xiàng)。目前,此參數(shù)支持以下兩個(gè)參數(shù):tolls 指示計(jì)算的路線應(yīng)避開(kāi)收費(fèi)公路/橋梁。highways 指示計(jì)算的路線應(yīng)避開(kāi)高速公路。</p><p>  (7)language(可選)- 傳回結(jié)果時(shí)所使用的語(yǔ)言。請(qǐng)參見(jiàn)支持的區(qū)域語(yǔ)言列表。請(qǐng)注意,我們會(huì)經(jīng)常更新支持的語(yǔ)言,因此該列表可能并不詳盡。如果未提供 language,那么,路線服務(wù)將會(huì)盡可能地嘗試使用瀏覽器的本機(jī)語(yǔ)言。您還可以通過(guò)使

77、用 http://map.google.com 的本地化域明確設(shè)置結(jié)果偏向。</p><p>  (8)sensor(必填)- 指示路線請(qǐng)求是否來(lái)自裝有位置傳感器的設(shè)備。該值必須為 true 或 false。</p><p>  2.6.3 路線規(guī)劃最終方法選擇</p><p>  啟發(fā)式A算法可以高效快捷地尋找出起點(diǎn)到終點(diǎn)的最短路徑,用于空間固定的局部地區(qū)地圖的

78、路徑搜索是個(gè)不錯(cuò)的選擇。本文系統(tǒng)開(kāi)始也打算用A算法來(lái)實(shí)現(xiàn)路徑規(guī)劃,但通過(guò)實(shí)踐發(fā)現(xiàn)用A算法來(lái)實(shí)現(xiàn),有三大問(wèn)題:第一、只能對(duì)空間固定的局部地區(qū)實(shí)現(xiàn)路線規(guī)劃,這樣便限制了軟件的使用范圍;第二、地圖切割道路網(wǎng)標(biāo)記工作量太大,切割成的圖片塊大小也直接影響路線規(guī)劃的最短路徑獲取;第三、顯示的最短路徑存在違背交通規(guī)則的情況。</p><p>  而Google Directions API可以選擇不在道路上的點(diǎn),而根據(jù)該點(diǎn)最近

79、道路上的點(diǎn)來(lái)進(jìn)行路線規(guī)劃,可以使選擇起點(diǎn)和終點(diǎn)時(shí)不一定要在道路上;另外使用Google Directions API,我們便不再需要對(duì)地圖進(jìn)行切割并標(biāo)記道路網(wǎng)了,使用Google Directions API可以以XML的形式將起點(diǎn)到終點(diǎn)的最優(yōu)路徑上的所有拐點(diǎn)信息發(fā)送給客戶端,客戶端只需要解析XML文件即可,而解析工作主要用kxml進(jìn)行解析。</p><p>  第三章 軟件需求分析</p><

80、;p>  本章主要介紹本文系統(tǒng)的需求,包括用戶的具體需求介紹、根據(jù)需求而劃分的具體功能模塊的介紹。</p><p><b>  3.1 用戶需求</b></p><p>  該手機(jī)軟件將是一款面向3G、支持OGC標(biāo)準(zhǔn)的移動(dòng)地圖軟件,預(yù)計(jì)最終實(shí)現(xiàn)以下一些功能:</p><p>  (1) 地圖瀏覽:支持地圖的放大、縮小、平移;</p

81、><p>  (2) 地圖查詢:支持屬性查詢、空間查詢以及屬性與空間的混合查詢;</p><p>  (3) POS(Points of Interest,興趣點(diǎn))的查詢、定位和添加。即在某個(gè)區(qū)域范圍內(nèi),搜索并定位用戶列出選擇條件的POS,查詢到適合的POS后,必須把用戶當(dāng)前的關(guān)注點(diǎn)設(shè)置為該P(yáng)OS所在的區(qū)域。在瀏覽地圖的過(guò)程中,用戶會(huì)記錄他們感興趣的一些點(diǎn),例如,餐館、旅游景點(diǎn)等。以后用戶就可

82、以通過(guò)這些記錄直接定位到這些點(diǎn)所在的地圖位置。</p><p>  (4) 線路規(guī)劃和引導(dǎo):規(guī)劃用戶從當(dāng)前為當(dāng)前位置到目的地的路線,以及經(jīng)過(guò)該路線過(guò)程中的引導(dǎo)。</p><p>  3.2 功能模塊劃分</p><p>  基于需求,我們?cè)O(shè)計(jì)了相關(guān)的功能去實(shí)現(xiàn)我們的需求,下面便是相關(guān)功能模塊的介紹及實(shí)現(xiàn)。</p><p>  3.2.1

83、功能模塊圖</p><p>  圖3-1 塊能模塊圖</p><p>  3.2.2 功能要求</p><p>  系統(tǒng)主要實(shí)現(xiàn)功能及描述:</p><p>  (1)實(shí)時(shí)定位:能夠根據(jù)用戶當(dāng)前位置,實(shí)時(shí)更新用戶當(dāng)前位置在地圖上的顯示。</p><p>  (2)地圖自由瀏覽:可以在聯(lián)網(wǎng)或離線狀態(tài)下自由瀏覽地圖,聯(lián)網(wǎng)

84、狀態(tài)可以瀏覽任意地點(diǎn)的地圖,但離線狀態(tài)下只能瀏覽當(dāng)前獲取到的局部地區(qū)的地圖。</p><p>  (3)地圖放大、縮小:支持聯(lián)網(wǎng)狀態(tài)下,對(duì)地圖進(jìn)行放大、縮小</p><p>  (4)興趣點(diǎn)添加:可以將指定地點(diǎn)(需給出確定經(jīng)緯度)、當(dāng)前位置添加為興趣點(diǎn)(即添加到LandmarkStore里)。</p><p>  (5)興趣點(diǎn)查詢、刪除、鎖定:能夠查詢用戶添加的興趣

85、點(diǎn),并能對(duì)其刪除、鎖定(即將該興趣點(diǎn)顯示在手機(jī)屏幕中心)。</p><p>  (6)路徑規(guī)劃:用戶可以選擇地圖上兩點(diǎn)(需在道路上)后,能夠?qū)牲c(diǎn)間規(guī)劃好的路徑顯示在地圖上。</p><p>  (7)興趣點(diǎn)的顯示與靠近動(dòng)畫(huà):能夠根據(jù)興趣點(diǎn)坐標(biāo)將興趣點(diǎn)顯示在地圖上,用戶靠近某興趣點(diǎn)時(shí),在該興趣點(diǎn)上顯示靠近動(dòng)畫(huà)。</p><p>  (8)指定地點(diǎn)范圍內(nèi)興趣點(diǎn)的搜索:

86、能夠?qū)χ付ǖ攸c(diǎn)或當(dāng)前位置的指定范圍內(nèi)興趣點(diǎn)進(jìn)行搜索。</p><p>  第四章 詳細(xì)設(shè)計(jì)與開(kāi)發(fā)</p><p>  本章主要介紹本文系統(tǒng)的詳細(xì)設(shè)計(jì)與開(kāi)發(fā),包括一般MIDlet程序開(kāi)發(fā)流程介紹、本文系統(tǒng)各功能模塊的詳細(xì)設(shè)計(jì)及功能模塊的相關(guān)流程邏輯介紹。</p><p>  4.1 MIDlet開(kāi)發(fā)流程介紹</p><p>  一個(gè)MIDle

87、t程序的開(kāi)發(fā)流程可分為這樣幾個(gè)階段:</p><p>  (1)代碼的編寫(xiě),產(chǎn)生.java文件</p><p>  (2)代碼的編譯,產(chǎn)生.class文件</p><p>  (3)預(yù)審核class文件</p><p>  (4)模擬器上,發(fā)生錯(cuò)誤重新編寫(xiě)代碼</p><p>  下圖是MIDlet開(kāi)發(fā)的完整流程:&l

88、t;/p><p>  圖4-1 MIDlet開(kāi)發(fā)流程</p><p>  4.2 各功能模塊詳細(xì)設(shè)計(jì)</p><p>  功能模塊劃分好,進(jìn)行詳細(xì)設(shè)計(jì)。程序開(kāi)始,實(shí)現(xiàn)位置的鎖定與監(jiān)聽(tīng),根據(jù)用戶位置,利用Google Static Maps API獲取地圖,再繪制地圖、興趣點(diǎn)、用戶圖標(biāo)等相關(guān)信息,此后用戶便可以在界面上進(jìn)行地圖模式的切換、自由瀏覽、添加刪除查詢鎖定興趣點(diǎn)

89、、搜索興趣點(diǎn)、路線規(guī)劃等操作。</p><p>  以下為程序系統(tǒng)結(jié)構(gòu)圖:</p><p>  圖4-2 系統(tǒng)結(jié)構(gòu)圖</p><p>  4.2.1 界面切換類</p><p>  界面切換類(MyGPSMidlet.java)也是程序的Midlet類,是每個(gè)J2ME程序所必需的,本文將用它來(lái)完成各種界面的切換功能。界面切換類相當(dāng)于一個(gè)大總

90、管,管理著所有其他的界面,負(fù)責(zé)切換手機(jī)屏幕顯示的界面,用于各界面之間的切換。</p><p>  1.設(shè)計(jì):分為引用和方法兩塊分別介紹。</p><p> ?、僦С钟兴薪缑骖惖囊茫?lt;/p><p>  (1)聯(lián)網(wǎng)地圖類MapCanvas:mc。</p><p>  (2)離線地圖類OffLineMapCanvas :offLinemc。&

91、lt;/p><p>  (3)添加興趣點(diǎn)界面類AddLandMarkForm :addLandMarkForm。</p><p>  (4)查詢、刪除、鎖定興趣點(diǎn)類QueryLandMarkForm: queryLandMarkForm。</p><p>  (5)指定地點(diǎn)范圍內(nèi)興趣點(diǎn)搜索類ScopeQueryLandMarkForm :scopeQueryLandMa

92、rkForm。</p><p>  (6)路線規(guī)劃類PlanLandThreadForm :planLandThreadForm。</p><p><b> ?、谥匾椒ń榻B:</b></p><p>  (1)public void changForm(String form):根據(jù)不同的form參數(shù)將對(duì)應(yīng)的界面設(shè)為手機(jī)當(dāng)前界面,是界面切換類

93、最重要的方法。其代碼為下:</p><p>  if(form.equals("offLinemc")){//切換到離線地圖</p><p>  this.setMc(null);</p><p>  this.display.setCurrent(offLinemc);</p><p><b>  }</

94、b></p><p>  else if(form.equals("mc")){//切換到聯(lián)網(wǎng)地圖</p><p>  this.setOffLinemc(null);</p><p><b>  try {</b></p><p>  mc=new MapCanvas(this);</p

95、><p>  } catch (Exception e) {</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p>  this.display.setCurrent(mc);</p><p><b>  }</b>

96、</p><p>  else if(form.equals("addLandMarkForm")){//切換到興趣點(diǎn)添加界面</p><p>  this.display.setCurrent(addLandMarkForm);</p><p><b>  }</b></p><p>  else

97、if(form.equals("queryLandMarkForm")){//切換到興趣點(diǎn)查詢、刪除、鎖定界面</p><p>  this.display.setCurrent(queryLandMarkForm);</p><p><b>  }</b></p><p>  else if(form.equals(&qu

98、ot;scopeQueryLandMarkForm")){//切換到指定地點(diǎn)指定范圍興趣點(diǎn)搜索界面</p><p>  this.display.setCurrent(scopeQueryLandMarkForm);</p><p><b>  }</b></p><p>  else if(form.equals("pla

99、nLandThreadForm")){//切換到路線規(guī)劃界面</p><p>  this.display.setCurrent(planLandThreadForm);</p><p><b>  }</b></p><p>  2.流程邏輯:界面切換類(MyGPSMidlet),通過(guò)調(diào)用ChangeForm方法,即可將切換到聯(lián)網(wǎng)地

100、圖(MapCanvas)、離線地圖(OffLineMapCanvas)、興趣點(diǎn)查詢刪除鎖定(QueryLandMarkForm)、指定地點(diǎn)范圍興趣點(diǎn)搜索(ScopeQueryLandMarkForm)以及路線規(guī)劃(PlanLandThreadForm)相關(guān)界面。以下為具體流程邏輯圖:</p><p>  圖4-3 界面切換類流程邏輯</p><p>  4.2.2 聯(lián)網(wǎng)地圖類</p

101、><p>  聯(lián)網(wǎng)地圖類(MapCanvas.java)程序運(yùn)行的主要界面,完成了地圖上各元素的獲取、繪制等,實(shí)現(xiàn)了用戶位置的實(shí)時(shí)定位、對(duì)用戶位置與興趣點(diǎn)(路標(biāo))相對(duì)位置的監(jiān)聽(tīng)、通過(guò)Command命令實(shí)現(xiàn)相應(yīng)操作及界面的切換等。</p><p>  1.設(shè)計(jì):分為成員變量和方法兩塊分別介紹。</p><p> ?、僦饕蓡T變量介紹:</p><p&g

102、t;  (1)界面切換類MyGPSMidlet(parent):持有界面切換類引用,以便Command命令能夠切換到對(duì)應(yīng)的界面。</p><p>  (2)Google Map API操作類GoogleMaps(gMap):GoogleMaps類封裝了Google靜態(tài)地圖獲取、路線規(guī)劃相關(guān)方法,有該類對(duì)象的一個(gè)引用,方便地圖的獲取及路線規(guī)劃。</p><p>  (3)private St

103、ring maptype:用于改變獲取地圖的類型,地圖類型有roadmap標(biāo)準(zhǔn)、mobile移動(dòng)設(shè)備、statellite衛(wèi)星圖像、hybrid混合圖像、terrain自然地形。</p><p>  (4)private double lat,lon:記錄當(dāng)前人物位置的緯度和經(jīng)度,人物位置的不斷變化,會(huì)被LocationListener事件監(jiān)聽(tīng)到,這樣就可以實(shí)時(shí)地更新人物的經(jīng)緯度,從而進(jìn)行實(shí)時(shí)定位。</p&

104、gt;<p>  (5)Vector m_cmd:每次用戶位置變化時(shí),向m_cmd里添加一個(gè)元素,讓聯(lián)網(wǎng)地圖類實(shí)現(xiàn)Runnable接口,在其run方法里通過(guò)檢測(cè)m_cmd里元素的個(gè)數(shù)來(lái)判斷是否需要更新地圖,更新完地圖后刪除m_cmd里面的元素。</p><p>  (6)private LocationProider lp: lp用來(lái)提供定位服務(wù),聯(lián)網(wǎng)地圖類初始化時(shí),需要初始化lp,并為其添加位置監(jiān)

105、聽(tīng)器,這里我們讓聯(lián)網(wǎng)地圖類實(shí)現(xiàn)LocationListener接口,這樣便可以在用戶位置發(fā)生變化時(shí),直接在界面上重繪用戶在地圖上的位置。lp初始化代碼如下:</p><p>  //初始化位置供應(yīng)商</p><p>  Criteria c=new Criteria();</p><p>  c.setHorizontalAccuracy(500);</p&g

106、t;<p>  c.setVerticalAccuracy(500);</p><p>  c.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);</p><p><b>  try {</b></p><p>  lp=LocationProvider.getInsta

107、nce(c);</p><p>  } catch (LocationException e) {</p><p>  parent.getDisplay().setCurrent(new Form("lp錯(cuò)誤"));</p><p><b>  }</b></p><p><b>  //

108、添加位置監(jiān)聽(tīng)器</b></p><p>  lp.setLocationListener(this, -1, -1, -1);</p><p>  (7)private Vector landMarks:landMarks用于盛放路標(biāo)庫(kù)里的所有興趣點(diǎn)(路標(biāo)),以便在地圖上畫(huà)出用戶添加的所有興趣點(diǎn)。初始化聯(lián)網(wǎng)地圖時(shí),需要初始化landMarks,并且要為每個(gè)興趣點(diǎn)添加靠近監(jiān)聽(tīng)事件

109、,具體代碼封裝在public void addProximity()里。代碼如下:</p><p>  //遍歷到每一個(gè)興趣點(diǎn),為其添加靠近事件監(jiān)聽(tīng)器</p><p>  for(int i=0;i<landMarks.size();i++){</p><p>  MyLandMark landMark=(MyLandMark)landMarks.elemen

110、tAt(i);</p><p><b>  try {</b></p><p>  lp.addProximityListener(landMark, landMark.getCoordinates(), R);</p><p>  } catch (LocationException e) {</p><p>  e.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論