2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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 手機GPS導航發(fā)展現(xiàn)狀1</p

10、><p>  1.3 課題主要內容和意義2</p><p>  第二章 相關技術概覽4</p><p>  2.1 基于位置的服務4</p><p>  2.1.1 基于位置服務的應用范圍4</p><p>  2.1.2 基于位置服務的定位方法4</p><p>  2.2 移

11、動地理信息系統(tǒng)6</p><p>  2.3 J2ME簡介7</p><p>  2.3.1 J2ME架構7</p><p>  2.3.2 JVM ( 虛擬機 )8</p><p>  2.3.3 MIDP( 移動信息設備簡表 )8</p><p>  2.4 JSR179開發(fā)包9</p&

12、gt;<p>  2.5 Google API簡介10</p><p>  2.6 路徑規(guī)劃的技術選擇10</p><p>  2.6.1 A算法實現(xiàn)最短路徑搜索10</p><p>  2.6.2 Google Directions API提供服務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>  第四章 詳細設計與開發(fā)1

14、6</p><p>  4.1 MIDlet開發(fā)流程介紹16</p><p>  4.2 各功能模塊詳細設計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 實體類27</p><p>  4.2.6 GoogleMaps類(引用開源代碼)28</p><p>  4.2.7 興趣點添加類29</p><p>  4.2.8 興趣點查詢、刪除、鎖定類30</p><p>  4.2.9 指定地

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

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

18、gt;  第七章 結論44</b></p><p><b>  致謝45</b></p><p><b>  參考文獻46</b></p><p><b>  引言</b></p><p>  手機是人們日常生活中使用非常頻繁的通信工具,雖然現(xiàn)在其費用比有線電

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

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

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

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

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

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

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

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

27、圖保持一致的柵格數(shù)據(jù)文件。矢量地圖是每幅經掃描、幾何糾正的影像圖,是對一種或多種地圖要素進行矢量化形成的一種矢量化數(shù)據(jù)文件,是一種更為方便的放大、漫游、查詢、檢查、量測、疊加地圖。這兩種實現(xiàn)各有優(yōu)缺點,柵格電子地圖生成比較方便,圖像比較細致,和人們日常使用的地圖類似,容易被用戶接受。但是,柵格電子地圖數(shù)據(jù)量比較大,存儲不方便,放大過程中會產生失真,數(shù)據(jù)不是很準確,很難進行全局或者局部校正,更新起來也比較費事。矢量電子地圖生成相對費事,但

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

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

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

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

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

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

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

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

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

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

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

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

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

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

42、地理信息系統(tǒng)</p><p>  移動地理信息系統(tǒng)(Mobile Geospatial Information System)的出現(xiàn)使人們在旅游中享受自主旅游的愿望得以實現(xiàn)。Mobile GIS是GIS從靜態(tài)走向動態(tài)環(huán)境的重大發(fā)展,通過綜合運用GPS的精確定位技術、便攜移動設備(如PocketPC、手機)、無線Internet接入和GIS的空間信息處理能力,使得系統(tǒng)能夠實時地獲取、存儲、更新、處理、分析和顯示地理

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

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

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

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

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

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

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

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

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

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

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

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

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

56、Information Profile Expert Group)所制訂出來使用在CLDC上的Profile,是以能使用在移動電話、雙向對講機、可無線通信的PDA(個人數(shù)字助理)上面為前提設計出來的。另外,像日本國內的NTT DoCoMo、J-PHONE、KDDI等電信商與移動電話制造商也都曾參與了MIDPEG。</p><p>  MIDP是在CLDC的功能上附加提供適合目標設備用的GUI與事件處理功能。這樣

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

58、 OS的名字來稱呼(與KJava是不同的)。在不使用各電信商的擴展API的時候,制作給移動電話用的MIDlet也將可以使用在Palm OS上面。由于未來MIDP也將會搭載到不同設備之上,也由于其兼容性高,只要寫過一次程序,就可以在其他移動電話或是移動電話以外的設備上執(zhí)行;而這也就是它最大的好處。</p><p>  2.4 JSR179開發(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第三版中都提到,這是一個可以在大多數(shù)J2ME中使用的可選包。API需要的最低平臺為Connected LimitedDevice Configuration (CLDC) 1.1,因為API需要數(shù)學浮點運

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

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

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

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

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

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

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

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

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

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

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

71、p><p>  并且h(n)距離h*(n)的呈度不能過大,否則h(n)就沒有過強的區(qū)分能力,算法效率并不會很高。對一個好的h(n)的評價是:h(n)在h*(n)的下界之下,并且盡量接近h*(n)。</p><p>  2.6.2 Google Directions API提供服務</p><p>  Google Directions API主要服務就是為了計算路線。

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

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

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

75、;<p>  (4)waypoints(可選)指定一組路標。路標通過經過指定的位置可以改變路線??梢砸跃暥?經度坐標或將進行地址解析的地址的形式指定路標。</p><p>  (5)alternatives(可選)設置為 true 時,可以指定路線服務可以在響應中提供多條備選路線。請注意,提供備選路線可能增加服務器的響應時間。</p><p>  (6)avoid(可選)指示

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

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

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

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

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

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

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

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

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

85、點,并能對其刪除、鎖定(即將該興趣點顯示在手機屏幕中心)。</p><p>  (6)路徑規(guī)劃:用戶可以選擇地圖上兩點(需在道路上)后,能夠將兩點間規(guī)劃好的路徑顯示在地圖上。</p><p>  (7)興趣點的顯示與靠近動畫:能夠根據(jù)興趣點坐標將興趣點顯示在地圖上,用戶靠近某興趣點時,在該興趣點上顯示靠近動畫。</p><p>  (8)指定地點范圍內興趣點的搜索:

86、能夠對指定地點或當前位置的指定范圍內興趣點進行搜索。</p><p>  第四章 詳細設計與開發(fā)</p><p>  本章主要介紹本文系統(tǒng)的詳細設計與開發(fā),包括一般MIDlet程序開發(fā)流程介紹、本文系統(tǒng)各功能模塊的詳細設計及功能模塊的相關流程邏輯介紹。</p><p>  4.1 MIDlet開發(fā)流程介紹</p><p>  一個MIDle

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

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

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

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

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

92、rkForm。</p><p>  (6)路線規(guī)劃類PlanLandThreadForm :planLandThreadForm。</p><p><b>  ②重要方法介紹:</b></p><p>  (1)public void changForm(String form):根據(jù)不同的form參數(shù)將對應的界面設為手機當前界面,是界面切換類

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")){//切換到興趣點添加界面</p><p>  this.display.setCurrent(addLandMarkForm);</p><p><b>  }</b></p><p>  else

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

98、ot;scopeQueryLandMarkForm")){//切換到指定地點指定范圍興趣點搜索界面</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),通過調用ChangeForm方法,即可將切換到聯(lián)網(wǎng)地

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

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

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

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

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

105、聽器,這里我們讓聯(lián)網(wǎng)地圖類實現(xiàn)LocationListener接口,這樣便可以在用戶位置發(fā)生變化時,直接在界面上重繪用戶在地圖上的位置。lp初始化代碼如下:</p><p>  //初始化位置供應商</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錯誤"));</p><p><b>  }</b></p><p><b>  //

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

109、,具體代碼封裝在public void addProximity()里。代碼如下:</p><p>  //遍歷到每一個興趣點,為其添加靠近事件監(jiān)聽器</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論