

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘要 </b></p><p> 本文系統(tǒng)將在J2ME平臺下,利用J2ME的JSR179定位開發(fā)包與Google靜態(tài)地圖實(shí)現(xiàn)定位、興趣點(diǎn)添加、路線規(guī)劃以及離線地圖定位等功能。在用戶手機(jī)硬件支持J2ME和定位功能的情況下,用戶只要支付少量的GPRS流量費(fèi)即可對用戶的位置進(jìn)行定位、路線規(guī)劃等功能。另外為了節(jié)省用戶的GPRS流量,設(shè)計(jì)中也特定開發(fā)了離線地圖模式,在
2、不聯(lián)網(wǎng)的情況下,用戶依然可以進(jìn)行GPS定位。</p><p> 本篇論文將分為七章進(jìn)行介紹。第一章緒論,介紹課題研究的背景、手機(jī)GPS導(dǎo)航發(fā)展現(xiàn)狀以及課題研究的主要內(nèi)意和意義;第二章主要對本文系統(tǒng)用的相關(guān)技術(shù)進(jìn)行介紹;第三、四、五章為本篇論文的重點(diǎn),詳細(xì)闡述了本文系統(tǒng)的需求、詳細(xì)設(shè)計(jì)以及存在的問題等;第六章為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、動地理信息系統(tǒng)6</p><p> 2.3 J2ME簡介7</p><p> 2.3.1 J2ME架構(gòu)7</p><p> 2.3.2 JVM ( 虛擬機(jī) )8</p><p> 2.3.3 MIDP( 移動信息設(shè)備簡表 )8</p><p> 2.4 JSR179開發(fā)包9</p&
12、gt;<p> 2.5 Google API簡介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ì)與開發(fā)1
14、6</p><p> 4.1 MIDlet開發(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類(引用開源代碼)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> 第五章 開發(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)絡(luò)延遲41</p><p> 5.1.4 不同的屏幕尺寸問題41</p><p> 5.1.5 模擬器到真機(jī)41</p><p> 5.2 尚未解決的問題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、話高,但是其隨時隨地的溝通優(yōu)勢,使人們擺脫了電話線路的束縛。目前在大部分地區(qū),幾乎人手一部或幾部手機(jī),正是由于手機(jī)的高普及率,才使得無線移動商務(wù)迅速普及和發(fā)展。</p><p> JAVA技術(shù)已經(jīng)從一種最初用來編寫與硬件無關(guān)的嵌入式系統(tǒng)的編程語言變成了一種與廠商無關(guān)、與硬件無關(guān)的健壯的服務(wù)器端技術(shù),它使整個企業(yè)界可以全面發(fā)掘以Web為核心的應(yīng)用程序的巨大潛力。隨著JAVA技術(shù)的不斷更新與提高,特別是J2ME技術(shù)
20、的出現(xiàn),使得手機(jī)應(yīng)用程序越來越成為人們關(guān)注的焦點(diǎn)。J2ME技術(shù)目前最流行的就是在制作手機(jī)應(yīng)用程序方面,JAVA手機(jī)的出現(xiàn)使得這一技術(shù)更有它的用武之地,發(fā)揮著靈活、輕便、快捷的作用。</p><p> 本文就將詳細(xì)的介紹J2ME這一技術(shù)在手機(jī)軟件制作方面的具體過程以及其重要的作用。</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年加拿大測量學(xué)家R.T.Tomlinso提出并建立了世界上第一個實(shí)用的地理信息系統(tǒng),隨后從1973年美國國防部開始制定全球定位系統(tǒng)(Global Positioning System:GPS)計(jì)劃后,歷經(jīng)了整整二十年的時間,才
22、架構(gòu)起二十四顆衛(wèi)星(二十一顆工作衛(wèi)星,三顆備用衛(wèi)星)的全球GPS網(wǎng)絡(luò),能提供全方位的即時導(dǎo)航和定位能力。這二十四顆衛(wèi)星布置完之初,一直都是由軍方或國家量測單位在使用這套系統(tǒng),即使對民間開放,定位的精確度也相當(dāng)有限,但隨著技術(shù)的發(fā)展和市場民情的需求,GPS開始向民間滲透,現(xiàn)在已在個人化、生活化、大眾化的市場取得了一席之地。</p><p> 隨著移動通信技術(shù)的發(fā)展,我國移動用戶數(shù)量也在快速增長。2007年我國的手
23、機(jī)用戶約為5.40億,而根據(jù)中國三大移動運(yùn)營商公布的數(shù)據(jù)顯示,截至2011年8月底,中國手機(jī)用戶總數(shù)卻已達(dá)9.2726億戶,手機(jī)上網(wǎng)用戶已超3億戶。與此同時人們對手機(jī)所賦予的功能也已經(jīng)擴(kuò)展到空間定位、分布式計(jì)算等高端領(lǐng)域。人們的社會活動等也越來越希望突破時間和空間的約束,這使得手機(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ī)利用自身存儲能力將空間地圖保存到手機(jī)里,定位導(dǎo)航時只需要調(diào)用本地?cái)?shù)據(jù)即可。但這種方式對手機(jī)的存儲空間和數(shù)據(jù)處理能力都有很大的要求,使得導(dǎo)航系統(tǒng)的分析功能和服務(wù)不能過于復(fù)雜,地圖數(shù)據(jù)也不能太大,導(dǎo)致GPS應(yīng)用服務(wù)在一般手機(jī)上受到
25、限制。當(dāng)然本地模式的好處就是不產(chǎn)生GPRS流量費(fèi),可以說是絕對的免費(fèi)了。未來手機(jī)存儲能力和數(shù)據(jù)處理能力的提升,這種方式GPS導(dǎo)航應(yīng)該會得到廣泛應(yīng)用。</p><p> 客戶端/服務(wù)器模式則是將地圖信息的相關(guān)數(shù)據(jù)保存在服務(wù)器端,手機(jī)通過HTTP等協(xié)議請求服務(wù)器來獲取相關(guān)的地圖數(shù)據(jù)信息。這種模式使得手機(jī)客戶端的壓力大大減小,不必再存儲龐大的地圖數(shù)據(jù)信息,可以將手機(jī)的數(shù)據(jù)處理能力用來提升用戶體驗(yàn)等更重要的方面。這樣一
26、種模式對手機(jī)網(wǎng)絡(luò)訪問速度有一定要求以及會產(chǎn)生GPRS流量費(fèi),但以目前來看這已經(jīng)不是問題,一般手機(jī)的網(wǎng)絡(luò)訪問速度都是能達(dá)到要求,GPRS流量費(fèi)用戶也應(yīng)該可以接受的,相當(dāng)于發(fā)幾個短信罷了。</p><p> 目前的地圖數(shù)據(jù)信息描述和表現(xiàn)主要有兩種方式:柵格圖片和矢量圖片。柵格電子地圖是各比例尺的紙介質(zhì)地形圖和各種專業(yè)使用的彩圖的數(shù)字化產(chǎn)品,就是每幅圖片經(jīng)掃描、幾何糾正及色彩校正后,形成在內(nèi)容、幾何精度和色彩上與地形
27、圖保持一致的柵格數(shù)據(jù)文件。矢量地圖是每幅經(jīng)掃描、幾何糾正的影像圖,是對一種或多種地圖要素進(jìn)行矢量化形成的一種矢量化數(shù)據(jù)文件,是一種更為方便的放大、漫游、查詢、檢查、量測、疊加地圖。這兩種實(shí)現(xiàn)各有優(yōu)缺點(diǎn),柵格電子地圖生成比較方便,圖像比較細(xì)致,和人們?nèi)粘J褂玫牡貓D類似,容易被用戶接受。但是,柵格電子地圖數(shù)據(jù)量比較大,存儲不方便,放大過程中會產(chǎn)生失真,數(shù)據(jù)不是很準(zhǔn)確,很難進(jìn)行全局或者局部校正,更新起來也比較費(fèi)事。矢量電子地圖生成相對費(fèi)事,但
28、是數(shù)據(jù)經(jīng)過壓縮,結(jié)構(gòu)緊湊,數(shù)據(jù)量小,冗余度低;有利于網(wǎng)絡(luò)和檢索分析;圖形顯示質(zhì)量好,精度高;但數(shù)據(jù)結(jié)構(gòu)復(fù)雜,多邊形疊加分析比較困難。矢量電子地圖可以隨意縮放,縮放過程中不會失真,可以進(jìn)行全局或者局部校正,更新起來也很方便。</p><p> Google 靜態(tài)地圖API將地圖以圖片形式展現(xiàn),使用http接口進(jìn)行圖片地圖的創(chuàng)建,無需使用java腳本實(shí)現(xiàn),適用于手機(jī)或定制客戶端系統(tǒng)的服務(wù)調(diào)用。開發(fā)者無需再考慮地圖數(shù)
29、據(jù)信息的制作、傳輸、存儲等,開發(fā)者只需要通過HTTP請求,便可以獲取想要的地圖圖片。通過靜態(tài)地圖調(diào)用API,可以進(jìn)一步增加電子地圖的應(yīng)用范圍,同時也使獲得地圖的方法變得更為簡潔直接。本文系統(tǒng)也將采用此方法進(jìn)行GPS導(dǎo)航系統(tǒng)的開發(fā)。</p><p> 1.3 課題主要內(nèi)容和意義</p><p> 目前市場上手機(jī)GPS導(dǎo)航較為成熟的系統(tǒng)都為本地模式的GPS導(dǎo)航系統(tǒng),將地圖數(shù)據(jù)信息下載到用
30、戶的手機(jī)自身存儲空間,具有響應(yīng)快速的優(yōu)點(diǎn),但卻過于消耗手機(jī)的存儲空間,又手機(jī)處理能力有限,使得做出來的導(dǎo)航軟件不能夠處理過于復(fù)雜的分析和服務(wù),應(yīng)用十分受限。因此客戶端/服務(wù)器模式的研究與開發(fā)成了近年來的研究熱點(diǎn)。</p><p> Google公司推出的Google靜態(tài)地圖API為手機(jī)開發(fā)者提供了通過HTTP請求便能得到想要地圖的服務(wù)。開發(fā)者只需要將定位的信息以及想獲取到地圖圖片的相關(guān)信息通過URL傳遞給Goo
31、gle服務(wù)器,便可以得到相應(yīng)的地圖圖片。Google公司的這項(xiàng)服務(wù)完全符合客戶端/服務(wù)器模式,用戶不需要存儲地圖數(shù)據(jù)到手機(jī)自身存儲里,開發(fā)者也不需要過多設(shè)備軟件制作復(fù)雜的柵格地圖或矢量地圖,只需要掌握相關(guān)API的使用便可高效地獲取想要的地圖,完全可以滿足普通用戶的GPS導(dǎo)航需求。</p><p> 本文系統(tǒng)也將采用Google靜態(tài)地圖API,在滿足一般手機(jī)用戶基準(zhǔn)上,利用J2ME的JSR179規(guī)范為大家?guī)硪豢?/p>
32、手機(jī)GPS導(dǎo)航軟件。該軟件主要實(shí)現(xiàn)了實(shí)時定位、興趣點(diǎn)相關(guān)操作、路線規(guī)劃等,也可以作為利用Google靜態(tài)地圖API進(jìn)行手機(jī)GPS導(dǎo)航軟件開發(fā)的其他手機(jī)開發(fā)者參考。</p><p> 第二章 相關(guān)技術(shù)概覽</p><p> 本章主要介紹本文系統(tǒng)用到的相關(guān)技術(shù)知識,包括位置服務(wù)、移動地理信息系統(tǒng)、J2ME平臺的簡介、J2ME的JSR179開發(fā)包介紹、Google API簡介以及做路線規(guī)劃時
33、的技術(shù)介紹和選擇。</p><p> 2.1 基于位置的服務(wù)</p><p> 基于位置的服務(wù)(Location Based Service,LBS),它是通過電信移動運(yùn)營商的無線電通訊網(wǎng)絡(luò)(如GSM網(wǎng)、CDMA網(wǎng))或外部定位方式(如GPS)獲取移動終端用戶的位置信息(地理坐標(biāo),或大地坐標(biāo)),在GIS(Geographic Information System,地理信息系統(tǒng))平臺的支
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)個人應(yīng)用領(lǐng)域</b></
35、p><p> 個人應(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)確的定位指引,對保障人民生命產(chǎn)生安全起到了至關(guān)重要的作用。LBS在智能交通管理領(lǐng)域也對緩解城市的交通壓力起到了重要的作用,通過監(jiān)控道路段的路況和車流量讓駕車人員能即時了解路段交通狀況,從而有效地選擇行車路線。</p><p><b> (2)商業(yè)應(yīng)用領(lǐng)域</b></p&
37、gt;<p> 在商業(yè)領(lǐng)域,LBS可以為用戶提供周邊商業(yè)信息,如附近餐館的近期促銷信息,旅館酒店等的打折優(yōu)惠信息。LBS為物流、安全、交通、城市規(guī)劃等傳統(tǒng)產(chǎn)生提供了精確的位置信息服務(wù),在商業(yè)上的應(yīng)用也越來越重要,發(fā)展前景很光明。</p><p> 2.1.2 基于位置服務(wù)的定位方法</p><p> 目前,基于位置服務(wù)的方法主要有三種:基于移動終端衛(wèi)星定位系統(tǒng)的GPS
38、定位方法、基于移動網(wǎng)絡(luò)的基站定位方法、無線輔助衛(wèi)星定位系統(tǒng)的A-GPS定位方法。</p><p> GPS定位是借助全球定位系統(tǒng)的衛(wèi)星體系來實(shí)現(xiàn)的。該方法不需要手機(jī)連接移動網(wǎng)絡(luò),而依靠手機(jī)自身的GPS定位模塊獲取衛(wèi)星信號,從而達(dá)到定位的效果。但在衛(wèi)星信號較差的地區(qū)性能和可能性都會急劇地下降,其初始化定位速度相對較慢。原理圖如下:</p><p> 圖2-1 GPS定位原理圖</p
39、><p> 基站定位依懶移動信號發(fā)射架和移動蜂窩基站的信號轉(zhuǎn)發(fā),移動電話測量不同基站下行導(dǎo)頻的TOA(Time of Arrival,到達(dá)時刻)或TDOA(Time Difference of Arrival,到達(dá)的時間差),根據(jù)該測量結(jié)果并結(jié)合基站的坐標(biāo),一般采用三角公式估計(jì)算法,就能夠計(jì)算出移動電話的位置。實(shí)際的位置估計(jì)算法需要考慮多基站(3個或3個以上)定位的情況,因此算法要復(fù)雜很多。一般而言,移動臺測量的基
40、站數(shù)目越多,測量精度越高,定位性能改善越明顯。原理圖如下:</p><p> 圖2-2 基站定位原理圖</p><p> A-GPS輔助定位利用峰窩/無線網(wǎng)絡(luò)提供輔助信息來幫助衛(wèi)星系統(tǒng)作為參考點(diǎn)進(jìn)行定位,并不對位置信息進(jìn)行計(jì)算,而是將GPS的位置信息數(shù)據(jù)傳給移動通信網(wǎng)絡(luò),由網(wǎng)絡(luò)的定位服務(wù)器進(jìn)行位置計(jì)算,同時移動網(wǎng)絡(luò)按照GPS的參考網(wǎng)絡(luò)所產(chǎn)生的輔助數(shù)據(jù),如差分校正數(shù)據(jù)、衛(wèi)星運(yùn)行狀態(tài)等傳遞
41、給手機(jī),并從數(shù)據(jù)庫中查出手機(jī)的近似位置和小區(qū)所在的位置信息傳給手機(jī),并從數(shù)據(jù)庫中查出手機(jī)的近似位置和小區(qū)所在的位置信息傳給手機(jī),這時手機(jī)可以很快捕捉到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)使人們在旅游中享受自主旅游的愿望得以實(shí)現(xiàn)。Mobile GIS是GIS從靜態(tài)走向動態(tài)環(huán)境的重大發(fā)展,通過綜合運(yùn)用GPS的精確定位技術(shù)、便攜移動設(shè)備(如PocketPC、手機(jī))、無線Internet接入和GIS的空間信息處理能力,使得系統(tǒng)能夠?qū)崟r地獲取、存儲、更新、處理、分析和顯示地理
43、信息,在現(xiàn)在乃至未來將發(fā)揮出巨大的潛力。</p><p> 移動GIS(Mobile GIS)是建立在移動計(jì)算環(huán)境、有限處理能力的移動終端條件下,提供移動中的、分布式的、隨遇性的移動地理信息服務(wù)的GIS,是一個集GIS、GPS、移動通信(GSM/GPRS/CD2MA)三大技術(shù)于一體的系統(tǒng)。它通過GIS完成空間數(shù)據(jù)管理和分析,GPS進(jìn)行定位和跟蹤,利用PDA完成數(shù)據(jù)獲取功能,借助移動通信技術(shù)完成圖開、文字、聲音等
44、數(shù)據(jù)的傳輸。</p><p> 與傳統(tǒng)的GIS相比,移動GIS的體系結(jié)構(gòu)略微復(fù)雜些,因?yàn)樗髮?shí)時地將空間信息傳輸給服務(wù)器。移動GIS的體系結(jié)構(gòu)主要由三部分組成:客戶端部分、服務(wù)器部分和數(shù)據(jù)源部分,分別承載在表現(xiàn)層、中間層和數(shù)據(jù)層。表現(xiàn)層是客戶端的承載層,直接與用戶打交道,是向用戶提供GIS服務(wù)的窗口。該層支持各種終端,包括PC機(jī),為移動GIS提供更新支持。數(shù)據(jù)層是移動GIS各類數(shù)據(jù)的集散地,確保GIS功能實(shí)現(xiàn)
45、的基礎(chǔ)和支撐。中間層是移動GIS的核心部分,系統(tǒng)的服務(wù)器都集中在該層,主要負(fù)責(zé)傳輸和處理空間數(shù)據(jù)信息,執(zhí)行移動GIS的功能等。包括Internet、Web Server、Map Server等組成部分。</p><p> 2.3 J2ME簡介</p><p> J2ME的設(shè)計(jì)初衷是運(yùn)行在不同的嵌入式系統(tǒng)和消費(fèi)電子設(shè)備上。為了適應(yīng)不同的設(shè)備,J2ME首先對不同的設(shè)備進(jìn)行了抽象。<
46、/p><p> J2ME在設(shè)計(jì)規(guī)范時,遵循“對于各種不同的設(shè)備設(shè)定一個單一的開發(fā)系統(tǒng)是沒有意義的事”這一基本原則。因此,J2ME先將所有的嵌入式設(shè)備大體上分為兩種:一種是運(yùn)算能力有限且電力供應(yīng)也有限的嵌入式設(shè)備(如PDA和手機(jī));另一種是運(yùn)算能力相對較佳并在電力供應(yīng)上相對比較充足的嵌入式裝置(如冷氣機(jī)、電冰箱和機(jī)頂盒)。Java引入了一個Configuration的概念,把上述運(yùn)算功能有限、電力有限的嵌入式設(shè)備定義
47、在CLDC規(guī)范中,而將另一種裝置定義在CDC(Connected Device Configuration,連接設(shè)備配置)規(guī)范中。也就是說,J2ME利用Configuration的概念把所有的嵌入式設(shè)備區(qū)分成兩種抽象的類別。</p><p> Configuration可以當(dāng)作是J2ME對于兩種類型嵌入式設(shè)備的規(guī)范。在這些規(guī)范中,定義了這些裝置至少要符合的運(yùn)算能力、供電能力和內(nèi)存大等規(guī)范,同時也定義了一組在這些
48、裝置上執(zhí)行的Java程序所能用的基本類庫。在這些規(guī)范中所定義的基本類庫為Java核心類庫的子集以及該類別設(shè)備特性相符的擴(kuò)充類庫。就CLDC規(guī)范而言,能支持的核心類庫有java.lang.*、java.io.*和java.util.*,能支持的擴(kuò)充類庫是java.microedition.io.*。</p><p> 區(qū)分出兩種主要的Configuration后,J2ME接著定義了框架(Profile)。Prof
49、ile是架構(gòu)在Configuration之上的規(guī)范。之所以有Profile的概念,是為了要更明確地區(qū)分出各種嵌入式設(shè)備上Java程序該如何開發(fā)、具有哪些功能。因此,Profile中定義了與特定嵌入式設(shè)備非常相關(guān)的擴(kuò)充類庫。當(dāng)然,這些擴(kuò)充類庫也是建立在底層Configuration所定義的核心類庫基礎(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)沒有替代小型計(jì)算設(shè)備的操作系統(tǒng)。相反,J2ME架構(gòu)由位于原生操作系統(tǒng)之上的多層軟件組成,這些軟件共同稱為“連接有限設(shè)備配置”(Connected Limited Device Configuration, CLDC)。安裝在操作系統(tǒng)之上的CLDC形成了小型計(jì)算設(shè)備的運(yùn)行時環(huán)境。</p><p> J2ME架構(gòu)由3個軟件層組成:第一層是包括在內(nèi)的配置
51、層,這個層次直接與原生操作系統(tǒng)進(jìn)行交互。配置層還處理profile和JVM之間的交互。第二層是profile層,由小型計(jì)算設(shè)備的應(yīng)用程序編程接口(API)的最小集合組成。第三層是Mobile Information Device Profile( MIDP )層。MIDP層由用戶網(wǎng)絡(luò)連接、永久存儲和用戶界面的java API組成。它還能夠訪問CLDC庫和MIDP庫。</p><p> 2.3.2 JVM (
52、虛擬機(jī) )</p><p> JVM是專門為微型電子設(shè)備與資源受限設(shè)備如:手機(jī)、尋呼機(jī)、移動互聯(lián)網(wǎng)設(shè)備、家用微電子設(shè)備等設(shè)計(jì)的一種輕便、緊湊的JAVA虛擬機(jī)。</p><p> JVM可以為微型電子設(shè)備提供一個完整的JAVA運(yùn)行環(huán)境,除了一些微型設(shè)備所必需的適當(dāng)?shù)墓δ苡兴煌?,它是由JAVA虛擬機(jī)規(guī)范定義的真實(shí)的JAVA虛擬機(jī)。它是專門為那些受資源限制,只有幾百K字節(jié)內(nèi)存的微型設(shè)備設(shè)
53、計(jì)的。</p><p> JVM起初是由SUN微系統(tǒng)實(shí)驗(yàn)室為一個名叫“Spotless”的項(xiàng)目創(chuàng)建的。它的目標(biāo)是為資源受限制的Palm(是目前較為流行的掌上電腦操作系統(tǒng))可連接的電子設(shè)備,實(shí)現(xiàn)一個java虛擬機(jī)。</p><p> 基于上述原因,JVM具有以下幾個特點(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( 移動信息設(shè)備簡表 )</p><p> MIDP是專門為互聯(lián)受限設(shè)備配置設(shè)計(jì)的,它為移動設(shè)備提供了一套API集合,M
55、IDP包含用戶界面類、持久存儲功能與網(wǎng)絡(luò)功能。它同時也包括一個供用戶下載新應(yīng)用到終端設(shè)備的標(biāo)準(zhǔn)運(yùn)行環(huán)境。運(yùn)行在MIDP下的小應(yīng)用程序叫做MIDlet移動設(shè)備小應(yīng)用程序,它與Applet類似。MIDP要求平臺設(shè)備提供一個機(jī)制用來存儲簡單的數(shù)據(jù)記錄,通過正常的平臺事件,比如重新啟動和電池更新維護(hù)系統(tǒng)的完整性。</p><p> MIDP是以SUN、Motorola、Nokia為中心的MIDPEG組織(Mobile
56、Information Profile Expert Group)所制訂出來使用在CLDC上的Profile,是以能使用在移動電話、雙向?qū)χv機(jī)、可無線通信的PDA(個人數(shù)字助理)上面為前提設(shè)計(jì)出來的。另外,像日本國內(nèi)的NTT DoCoMo、J-PHONE、KDDI等電信商與移動電話制造商也都曾參與了MIDPEG。</p><p> MIDP是在CLDC的功能上附加提供適合目標(biāo)設(shè)備用的GUI與事件處理功能。這樣
57、一來,就可以當(dāng)成MIDP應(yīng)用程序(MIDlet)來運(yùn)行了。</p><p> MIDP由于是由多個企業(yè)所共同策劃出來的開放標(biāo)準(zhǔn),因此主要的移動電話制造商也會制造出大量的對應(yīng)機(jī)種。也就是說,以MIDP為基準(zhǔn)所制作出來的應(yīng)用程序,也將可以在流通于市面上的移動電話上執(zhí)行。</p><p> 另外,MIDP不僅限于移動電話,也已經(jīng)被移植到PDA Palm OS上,而以MIDP for Palm
58、 OS的名字來稱呼(與KJava是不同的)。在不使用各電信商的擴(kuò)展API的時候,制作給移動電話用的MIDlet也將可以使用在Palm OS上面。由于未來MIDP也將會搭載到不同設(shè)備之上,也由于其兼容性高,只要寫過一次程序,就可以在其他移動電話或是移動電話以外的設(shè)備上執(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,因?yàn)锳PI需要數(shù)學(xué)浮點(diǎn)運(yùn)
60、算的支持。</p><p> S60和Series 40同樣支持MM API,詳情請參考Location API for J2ME?定位API的目的就是開發(fā)具有定位功能的設(shè)備的應(yīng)用程序。根據(jù)設(shè)備的自然情況,API提供利用設(shè)備的方法。另外,定位API是很多易用的類和接口的壓縮包,其在開發(fā)移動應(yīng)用程序的時候具有以下三個特點(diǎn):</p><p> (1)獲取設(shè)備的位置信息</p>
61、<p> (2)創(chuàng)建、編輯、存儲、銷毀陸標(biāo)</p><p> (3)獲取設(shè)備的定位</p><p> 定位API首先需要連接一個定位方法,利用定位方法產(chǎn)生定位對象,每種定位方法都不一樣。比如,各種方法所需要的時間都不一樣,每種方法的精確度也不一樣。最常用的方法有基于設(shè)備(比如GPS,這種方法基于衛(wèi)星全球定位系統(tǒng))、基于網(wǎng)絡(luò)(比如蜂窩,這種方法中網(wǎng)絡(luò)決定了位置),還有混合方
62、法(比如A-GPS方法,這種方法利用網(wǎng)絡(luò)信息來加速定位)。</p><p> 下面的圖表顯示了API MIDLet使用GPS定位方法來定位的結(jié)構(gòu)。對MIDLet在SDK環(huán)境中檢測后,還必須在真實(shí)的環(huán)境中進(jìn)行檢測,來確保正確運(yùn)行。真實(shí)的環(huán)境意味著在支持移動定位的設(shè)備中使用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)來響應(yīng)HTTP請求。您可以為每個請求指定地圖的位置、圖像的大小、縮放的級別、地圖的類型
64、以及可選擇標(biāo)記在地圖各個位置上的放置。些外,您還可以使用字母字符為您的標(biāo)記制作標(biāo)簽,以便在“關(guān)鍵字”中引用這些標(biāo)記。</p><p> Google Directions API,是一種使用 HTTP 請求計(jì)算多個位置間路線的服務(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ù)不適用于對用戶輸入的內(nèi)容進(jìn)行實(shí)時響應(yīng)。有關(guān)動態(tài)路線計(jì)算(例如,在用戶界面元素中),請參見 JavaScript API V3 Directions Service 文檔。計(jì)算路線是一種耗時、耗資源的任務(wù)。如果可能,系統(tǒng)會使用此處介紹的服務(wù)提前計(jì)算已知地址,并將結(jié)果存儲在您自己設(shè)計(jì)的臨時緩存中。</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、,這是一種在圖形平面上,有多個節(jié)點(diǎn)的路徑,求出最低通過成本的算法。常用于游戲中的NPC的移動計(jì)算,或線上游戲的BOT的移動計(jì)算上。該算法像Dijkstra算法一樣,可以找到一條最短路徑;也像BFS一樣,進(jìn)行啟發(fā)式的搜索。</p><p> A*算法最為核心的部分,就在于它的一個估值函數(shù)的設(shè)計(jì)上:f(n)=g(n)+h(n);其中f(n)是每個可能試探點(diǎn)的估值,它有兩部分組成:一部分,為g(n),它表示從起始搜索
68、點(diǎn)到當(dāng)前點(diǎn)的代價(jià)(通常用某結(jié)點(diǎn)在搜索樹中的深度來表示)。另一部分,即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、搜索樹上存在著從起始點(diǎn)到終點(diǎn)的最優(yōu)路徑。
69、</p><p> 2、問題域是有限的。</p><p> 3、所有結(jié)點(diǎn)的子結(jié)點(diǎn)的搜索代價(jià)值>0。</p><p> 4、h(n)=<h*(n) (h*(n)為實(shí)際問題的代價(jià)值)。</p><p> 當(dāng)此四個條件都滿足時,一個具有f(n)=g(n)+h(n)策略的啟發(fā)式算法能成為A*算法,并一定能找到最優(yōu)解。</p&
70、gt;<p> 對于一個搜索問題,顯然,條件1,2,3都是很容易滿足的,而條件4: h(n)<=h*(n)是需要精心設(shè)計(jì)的,由于h*(n)顯然是無法知道的,所以,一個滿足條件4的啟發(fā)策略h(n)就來的難能可貴了。</p><p> 不過,對于圖的最優(yōu)路徑搜索和八數(shù)碼問題,有些相關(guān)策略h(n)不僅很好理解,而且已經(jīng)在理論上證明是滿足條件4的,從而為這個算法的推廣起到了決定性的作用。</
71、p><p> 并且h(n)距離h*(n)的呈度不能過大,否則h(n)就沒有過強(qiáng)的區(qū)分能力,算法效率并不會很高。對一個好的h(n)的評價(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ā)送路線請求,服務(wù)器根據(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)址的標(biāo)準(zhǔn),所有參數(shù)均使用字符&分隔。下面枚舉了這些參數(shù)及其可能的值。</p><p> Google Directions API 使用以下網(wǎng)
74、址參數(shù)定義路線請求:</p><p> (1)origin(必填)- 希望根據(jù)其計(jì)算路線的地址或文本緯度/經(jīng)度值。</p><p> (2)destination(必填)- 希望根據(jù)其計(jì)算路線的地址或文本緯度/經(jīng)度值。</p><p> (3)mode(可選,默認(rèn)為 driving)- 指定計(jì)算路線時使用的出行方式。在出行方式中指定有效的值。</p>
75、;<p> (4)waypoints(可選)指定一組路標(biāo)。路標(biāo)通過經(jīng)過指定的位置可以改變路線??梢砸跃暥?經(jīng)度坐標(biāo)或?qū)⑦M(jìn)行地址解析的地址的形式指定路標(biāo)。</p><p> (5)alternatives(可選)設(shè)置為 true 時,可以指定路線服務(wù)可以在響應(yīng)中提供多條備選路線。請注意,提供備選路線可能增加服務(wù)器的響應(yīng)時間。</p><p> (6)avoid(可選)指示
76、計(jì)算的路線應(yīng)避開指定的地圖項(xiàng)。目前,此參數(shù)支持以下兩個參數(shù):tolls 指示計(jì)算的路線應(yīng)避開收費(fèi)公路/橋梁。highways 指示計(jì)算的路線應(yīng)避開高速公路。</p><p> (7)language(可選)- 傳回結(jié)果時所使用的語言。請參見支持的區(qū)域語言列表。請注意,我們會經(jīng)常更新支持的語言,因此該列表可能并不詳盡。如果未提供 language,那么,路線服務(wù)將會盡可能地嘗試使用瀏覽器的本機(jī)語言。您還可以通過使
77、用 http://map.google.com 的本地化域明確設(shè)置結(jié)果偏向。</p><p> (8)sensor(必填)- 指示路線請求是否來自裝有位置傳感器的設(shè)備。該值必須為 true 或 false。</p><p> 2.6.3 路線規(guī)劃最終方法選擇</p><p> 啟發(fā)式A算法可以高效快捷地尋找出起點(diǎn)到終點(diǎn)的最短路徑,用于空間固定的局部地區(qū)地圖的
78、路徑搜索是個不錯的選擇。本文系統(tǒng)開始也打算用A算法來實(shí)現(xiàn)路徑規(guī)劃,但通過實(shí)踐發(fā)現(xiàn)用A算法來實(shí)現(xiàn),有三大問題:第一、只能對空間固定的局部地區(qū)實(shí)現(xiàn)路線規(guī)劃,這樣便限制了軟件的使用范圍;第二、地圖切割道路網(wǎng)標(biāo)記工作量太大,切割成的圖片塊大小也直接影響路線規(guī)劃的最短路徑獲??;第三、顯示的最短路徑存在違背交通規(guī)則的情況。</p><p> 而Google Directions API可以選擇不在道路上的點(diǎn),而根據(jù)該點(diǎn)最近
79、道路上的點(diǎn)來進(jìn)行路線規(guī)劃,可以使選擇起點(diǎn)和終點(diǎn)時不一定要在道路上;另外使用Google Directions API,我們便不再需要對地圖進(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)的移動地圖軟件,預(yù)計(jì)最終實(shí)現(xiàn)以下一些功能:</p><p> (1) 地圖瀏覽:支持地圖的放大、縮小、平移;</p
81、><p> (2) 地圖查詢:支持屬性查詢、空間查詢以及屬性與空間的混合查詢;</p><p> (3) POS(Points of Interest,興趣點(diǎn))的查詢、定位和添加。即在某個區(qū)域范圍內(nèi),搜索并定位用戶列出選擇條件的POS,查詢到適合的POS后,必須把用戶當(dāng)前的關(guān)注點(diǎn)設(shè)置為該P(yáng)OS所在的區(qū)域。在瀏覽地圖的過程中,用戶會記錄他們感興趣的一些點(diǎn),例如,餐館、旅游景點(diǎn)等。以后用戶就可
82、以通過這些記錄直接定位到這些點(diǎn)所在的地圖位置。</p><p> (4) 線路規(guī)劃和引導(dǎo):規(guī)劃用戶從當(dāng)前為當(dāng)前位置到目的地的路線,以及經(jīng)過該路線過程中的引導(dǎo)。</p><p> 3.2 功能模塊劃分</p><p> 基于需求,我們設(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í)時定位:能夠根據(jù)用戶當(dāng)前位置,實(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)下,對地圖進(jìn)行放大、縮小</p><p> (4)興趣點(diǎn)添加:可以將指定地點(diǎn)(需給出確定經(jīng)緯度)、當(dāng)前位置添加為興趣點(diǎn)(即添加到LandmarkStore里)。</p><p> (5)興趣點(diǎn)查詢、刪除、鎖定:能夠查詢用戶添加的興趣
85、點(diǎn),并能對其刪除、鎖定(即將該興趣點(diǎn)顯示在手機(jī)屏幕中心)。</p><p> (6)路徑規(guī)劃:用戶可以選擇地圖上兩點(diǎn)(需在道路上)后,能夠?qū)牲c(diǎn)間規(guī)劃好的路徑顯示在地圖上。</p><p> (7)興趣點(diǎn)的顯示與靠近動畫:能夠根據(jù)興趣點(diǎn)坐標(biāo)將興趣點(diǎn)顯示在地圖上,用戶靠近某興趣點(diǎn)時,在該興趣點(diǎn)上顯示靠近動畫。</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ì)與開發(fā)</p><p> 本章主要介紹本文系統(tǒng)的詳細(xì)設(shè)計(jì)與開發(fā),包括一般MIDlet程序開發(fā)流程介紹、本文系統(tǒng)各功能模塊的詳細(xì)設(shè)計(jì)及功能模塊的相關(guān)流程邏輯介紹。</p><p> 4.1 MIDlet開發(fā)流程介紹</p><p> 一個MIDle
87、t程序的開發(fā)流程可分為這樣幾個階段:</p><p> (1)代碼的編寫,產(chǎn)生.java文件</p><p> (2)代碼的編譯,產(chǎn)生.class文件</p><p> (3)預(yù)審核class文件</p><p> (4)模擬器上,發(fā)生錯誤重新編寫代碼</p><p> 下圖是MIDlet開發(fā)的完整流程:&l
88、t;/p><p> 圖4-1 MIDlet開發(fā)流程</p><p> 4.2 各功能模塊詳細(xì)設(shè)計(jì)</p><p> 功能模塊劃分好,進(jìn)行詳細(xì)設(shè)計(jì)。程序開始,實(shí)現(xiàn)位置的鎖定與監(jiān)聽,根據(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類,是每個J2ME程序所必需的,本文將用它來完成各種界面的切換功能。界面切換類相當(dāng)于一個大總
90、管,管理著所有其他的界面,負(fù)責(zé)切換手機(jī)屏幕顯示的界面,用于各界面之間的切換。</p><p> 1.設(shè)計(jì):分為引用和方法兩塊分別介紹。</p><p> ①支持有所有界面類的引用:</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ù)將對應(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),通過調(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í)時定位、對用戶位置與興趣點(diǎn)(路標(biāo))相對位置的監(jiān)聽、通過Command命令實(shí)現(xiàn)相應(yīng)操作及界面的切換等。</p><p> 1.設(shè)計(jì):分為成員變量和方法兩塊分別介紹。</p><p> ?、僦饕蓡T變量介紹:</p><p&g
102、t; (1)界面切換類MyGPSMidlet(parent):持有界面切換類引用,以便Command命令能夠切換到對應(yīng)的界面。</p><p> (2)Google Map API操作類GoogleMaps(gMap):GoogleMaps類封裝了Google靜態(tài)地圖獲取、路線規(guī)劃相關(guān)方法,有該類對象的一個引用,方便地圖的獲取及路線規(guī)劃。</p><p> (3)private St
103、ring maptype:用于改變獲取地圖的類型,地圖類型有roadmap標(biāo)準(zhǔn)、mobile移動設(shè)備、statellite衛(wèi)星圖像、hybrid混合圖像、terrain自然地形。</p><p> (4)private double lat,lon:記錄當(dāng)前人物位置的緯度和經(jīng)度,人物位置的不斷變化,會被LocationListener事件監(jiān)聽到,這樣就可以實(shí)時地更新人物的經(jīng)緯度,從而進(jìn)行實(shí)時定位。</p&
104、gt;<p> (5)Vector m_cmd:每次用戶位置變化時,向m_cmd里添加一個元素,讓聯(lián)網(wǎng)地圖類實(shí)現(xiàn)Runnable接口,在其run方法里通過檢測m_cmd里元素的個數(shù)來判斷是否需要更新地圖,更新完地圖后刪除m_cmd里面的元素。</p><p> (6)private LocationProider lp: lp用來提供定位服務(wù),聯(lián)網(wǎng)地圖類初始化時,需要初始化lp,并為其添加位置監(jiān)
105、聽器,這里我們讓聯(lián)網(wǎng)地圖類實(shí)現(xiàn)LocationListener接口,這樣便可以在用戶位置發(fā)生變化時,直接在界面上重繪用戶在地圖上的位置。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錯誤"));</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用于盛放路標(biāo)庫里的所有興趣點(diǎn)(路標(biāo)),以便在地圖上畫出用戶添加的所有興趣點(diǎn)。初始化聯(lián)網(wǎng)地圖時,需要初始化landMarks,并且要為每個興趣點(diǎn)添加靠近監(jiān)聽事件
109、,具體代碼封裝在public void addProximity()里。代碼如下:</p><p> //遍歷到每一個興趣點(diǎn),為其添加靠近事件監(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于OpenGL與J2ME的動態(tài)導(dǎo)航系統(tǒng)研究與設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)---基于j2me的java游戲
- 基于j2me平臺的手機(jī)應(yīng)用開發(fā)-畢業(yè)論文
- 畢業(yè)設(shè)計(jì)---基于j2me為平臺的坦克大戰(zhàn)游戲開發(fā)
- 畢業(yè)設(shè)計(jì)---基于j2me的手機(jī)游戲開發(fā)
- j2me飛機(jī)游戲(畢業(yè)設(shè)計(jì))
- 基于j2me平臺的手機(jī)應(yīng)用開發(fā)-畢業(yè)論文
- j2me游戲畢業(yè)論文
- j2me畢業(yè)論文-- j2me手機(jī)彩票軟件開發(fā)
- 畢業(yè)設(shè)計(jì)---基于j2me平臺環(huán)境下的手機(jī)音樂播放器
- 基于j2me平臺的手機(jī)游戲開發(fā)
- 基于j2me平臺的手機(jī)游戲開發(fā)
- 畢業(yè)設(shè)計(jì)(論文)j2me手機(jī)游戲的開發(fā)-beckham goal
- 基于j2me的手機(jī)定時系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文
- 基于gps智能抄表導(dǎo)航系統(tǒng) 畢業(yè)設(shè)計(jì)
- 畢業(yè)論文基于j2me的手機(jī)定時系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)論文---- 基于j2me的手機(jī)游戲開發(fā)
- 基于j2me技術(shù)的手機(jī)導(dǎo)游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文 (2)
- 基于j2me技術(shù)的手機(jī)導(dǎo)游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)---畢業(yè)論文
- 畢業(yè)論文--基于j2me平臺的俄羅斯方塊游戲設(shè)計(jì)與實(shí)現(xiàn)
評論
0/150
提交評論