1 網(wǎng)絡(luò)0701-龍超-基于WM6的GPS數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
1 網(wǎng)絡(luò)0701-龍超-基于WM6的GPS數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
1 網(wǎng)絡(luò)0701-龍超-基于WM6的GPS數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
1 網(wǎng)絡(luò)0701-龍超-基于WM6的GPS數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
1 網(wǎng)絡(luò)0701-龍超-基于WM6的GPS數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計題目基于WM6的GPS數(shù)據(jù)采集系統(tǒng)的設(shè)計與實現(xiàn)學(xué)院信息科學(xué)與工程學(xué)院專業(yè)網(wǎng)絡(luò)工程班級網(wǎng)絡(luò)0701學(xué)生龍超學(xué)號指導(dǎo)教師鄭艷偉二〇一一年六月十日摘要GPS(GlobalPositioningSystem,全球定位系統(tǒng))因其具有的高精度、全天候和自動測量等特點,已經(jīng)漸漸融入了國家建設(shè)、社會發(fā)展和人民生活的各個應(yīng)用領(lǐng)域。隨著智能移動終端特別是智能手機的快速普及,具有定位和導(dǎo)航功能的手機正日益受到消費者的追捧,GPS導(dǎo)航也將成為智能手機不可或缺的重要組成部分。因此,手機GPS的研究具有很好的發(fā)展前景。經(jīng)緯度能夠定位全球的各一個地方,它是手機GPS的核心,也是手機GPS研究的基礎(chǔ)。本文主要研究在WindowsMobile6.5系統(tǒng)上實時的獲取GPS數(shù)據(jù),包括:經(jīng)度,緯度,時間,衛(wèi)星個數(shù),海拔高度,地理位置等相關(guān)的信息,并在地圖上顯示相應(yīng)的地理位置,然后將數(shù)據(jù)保存在手機的數(shù)據(jù)庫中。本文地圖采用CodePlex上的一個免費開源的.NET控件,它具有強大的地圖功能,支持Google,Yahoo!,Bing,Open-StreetMap,ArcGIS,Pergo,SigPac等多種地圖上實現(xiàn)尋找路徑、查找地理位置,地理編碼以及地圖展示功能,并支持緩存和運行在Mobile環(huán)境中。由于沒有真實的GPS設(shè)備,這里選擇了WindowsMobile6SDK中提供的一個小工具FackGPS??梢栽O(shè)置讓GPSID從一個包含NMEA命令的.txt文件讀取GPS數(shù)據(jù),而不需要從GPS設(shè)備讀取數(shù)據(jù)。對于開發(fā)的應(yīng)用程序來說,跟訪問真實的設(shè)備并沒有兩樣。過去幾年,GPS在車載導(dǎo)航等諸多領(lǐng)域取得了巨大的成就,不久的將來手機GPS也將掀起新一輪的高潮。本系統(tǒng)可以為隨之而來的手機GPS各種應(yīng)用和服務(wù)提供數(shù)據(jù)支持。如:手機GPS導(dǎo)航、手機防盜追蹤等。關(guān)鍵詞:GPS,WindowsMoblie,數(shù)據(jù)采集ABSTRACTBecauseofitsadvantagesincludinghighprecision,24-hourservice,automaticmeasurementandsoon,GlobalPositioningSystemhadgraduallyintegratedintovariousapplicationsinnation-building,socialdevelopmentandpeople’slives.Withtherapidpopularityofintelligentmobiletermination,especiallysmartmobilephones,positioningandnavigation-enabledmobilephonesareincreasinglysoughtafterbyconsumers,andatthesametime,GPSnavigationwillalsobecomeanimportantandindispensablepartofsmartphones.Therefor,theresearchofmobilephonesGPSwillpossesswellprospects.LongitudeandLatitudecanlocateeverypartsoftheworld,whichisthecoreofmobileGPSandalsoisthebasisoftheresearchaboutmobileGPS.ThepaperstudygettingGPSdatareal-timeinthesystemofWindowsMobile6.5.Thedataincludstheinformationoflongitude,latitude,time,numbersofsatellites,altitude,locationandsoon.Atthesametime,thecorrespondinglocationisdisplayedonthemap,andthedataarestoredinthedatabaseofthemobilephone.Thearticleadoptafreeopensourceof.NETcontrolonCodePlex.Thecontrolhaspowerfulmappingcapabilities,andsupportsWay-finding,lookinguplocations,geocodingandfunctionofmapdisplayonvariousmapsincludingGoogle,Yahoo!,Bing,OpenStreetMap,ArcGIS,Pergo,SigPacandsoon.What’smore,itsupportscatchingandrunninginmobileenvironment.IntheabsenceofarealGPSdevice,wechooseasmalltoolnamedFackGPSwhichisprovidedbyWindowsMobile6SDK.ThenwecansetGPSIDtoreadGPSdatafroma.txtfilewhichhasaninstructionofNMEA,ratherthanfromGPSdevice.Fortheourapplication,thereisnodifferencebetweentherealGPSdeviceandtheFackGPS.Overthepastfewyears,GPSincarnavigationandmanyotherfieldshasmadegreatachievements.Inthenearfuture,GPSmobilephoneswillalsobeanewroundofhightide.ThesystemcanprovidedatasupporttothefollowingvariousapplicationsandservicesofmobileGPS.Suchas,mobilephoneGPSnavigation,mobilephoneanti-thefttrackingandsoon.Keywords:GPS;WindowsMoblie6;dataacquisition;目錄摘要 IABSTRACT II目錄 III1前言 -1-1.1研究背景 -1-1.2手機GPS前景 -2-1.3選題的目的與設(shè)計要求 -2-2相關(guān)技術(shù) -4-2.1GPS定位原理 -4-2.2GPS數(shù)據(jù)格式 -5-2.3開發(fā)環(huán)境與相關(guān)工具 -11-3需求分析 -13-3.1項目概述 -13-3.2功能需求 -13-3.3性能需求 -13-3.4運行需要 -13-3總體設(shè)計 -14-3.1系統(tǒng)總體結(jié)構(gòu) -14-3.2手機GPS模塊 -16-3.3數(shù)據(jù)庫設(shè)計 -16-3.4GPS軟件設(shè)計 -17-3.4.1數(shù)據(jù)采集方法 -17-3.4.2GPS類設(shè)計 -18-3.4.3窗體類設(shè)計 -18-4詳細(xì)設(shè)計 -19-4.1模擬GPS數(shù)據(jù) -19-4.2GPS類 -20-4.3數(shù)據(jù)存儲設(shè)計 -25-4.4地圖模塊設(shè)計 -26-4.4.1初始化地圖控件 -26-4.4.2GPS數(shù)據(jù)獲取 -27-4.4.3地圖定位設(shè)計 -29-4.4.4查找功能的實現(xiàn) -29-4.4.5其它功能實現(xiàn) -30-5系統(tǒng)測試 -31-5.1獲取數(shù)據(jù)功能測試 -31-5.2地圖定位測試 -32-5.3查找功能測試 -32-5.4數(shù)據(jù)存儲測試 -34-5.5其它功能測試 -34-結(jié)論 -35-參考文獻(xiàn) -36-致謝 -37-1前言1.1研究背景GPS,即GlobalePositioningSystem,全球定位系統(tǒng),簡稱“球位系”。是20世紀(jì)70年代開始研制,經(jīng)過20余年的研究實驗,耗資300億美元,到1994年3月,全球覆蓋率高達(dá)98%的24顆GPS衛(wèi)星星座布設(shè)完成。其主要目的是為陸、海、空三大領(lǐng)域提供實時、全天候和全球性的導(dǎo)航服務(wù),并用于情報收集、核爆監(jiān)測和應(yīng)急通訊等一些軍事目的,是美國獨霸全球戰(zhàn)略的重要組成。最初,GPS只運用于軍事領(lǐng)域,目前已被廣泛應(yīng)用于交通行業(yè)和通信行業(yè),可以通過服務(wù)中心實現(xiàn)車輛的定位導(dǎo)航、防盜反劫、服務(wù)救援、遠(yuǎn)程監(jiān)控、軌跡記錄等功能。GPS現(xiàn)實的應(yīng)用已經(jīng)使GPS技術(shù)從軍方領(lǐng)域以及專業(yè)化領(lǐng)域走向了大眾化的應(yīng)用范疇,以GPS為核心的衛(wèi)星導(dǎo)航定位技術(shù)應(yīng)用在中國已經(jīng)有近20年的發(fā)展歷程。GPS系統(tǒng)主要由三部分繪成,即空間部分、地面控制部分、用戶設(shè)備部分??臻g部分是由24顆衛(wèi)星組成,位于距地面20200km的上空,均勻分布在6個軌道面上,每個軌道面4顆,軌道面與地球赤道面夾角為55度。使得在全球任何地方、任何時間都可觀測到4顆以上的衛(wèi)星,并能在衛(wèi)星中預(yù)存的導(dǎo)航信息。GPS的衛(wèi)星因為大氣摩擦等問題,隨著時間的推移,導(dǎo)航精度會逐漸降低。地面控制系統(tǒng)由監(jiān)測站(MonitorStation)、主控制站(MasterMonitorStation)、地面天線(GroundAntenna)所組成。用戶設(shè)備部分即GPS信號接收機,由主機、天線、電源組成。GPS并不是最早的無線電導(dǎo)航系統(tǒng),最早人們采用的是長波信號,波長長達(dá)26公里,因為長波信號可以輕易地被電離層反射,所以美國的OMEGA系統(tǒng)用了八個發(fā)射器就把信號覆蓋了全球。不過因為信號波長比較長,定位精度受到很大影響:OMEGA系統(tǒng)的精度只有六公里。為提高定位精度,只有提高無線電信號頻率,但是借助電離層反射的全球覆蓋就受到了影響:波長越短的信號,直線傳輸特性越強,同時不能被電離層反射。通過把波長減小到2.6公里,LORAN系統(tǒng)倒是把定位精度提高到450米了,可全球只有10%的面積被信號覆蓋。自從1957年有了衛(wèi)星,科學(xué)家的興趣自然就轉(zhuǎn)到這上面來了:衛(wèi)星可以發(fā)射短波長信號,穿透電離層覆蓋半個地球的面積如今隨著全球衛(wèi)星導(dǎo)航定位系統(tǒng)的市場競爭加劇,正在形成的四大全球衛(wèi)星導(dǎo)航定位系統(tǒng)同臺競技的格局已經(jīng)顯現(xiàn)出來了,也就是美國的GPS、俄羅斯的格羅納絲、歐洲的伽俐略和中國的北斗系統(tǒng)。2009-2012年,以GPS為代表的衛(wèi)星導(dǎo)航應(yīng)用產(chǎn)業(yè)前景看好,成為繼移動通信和互聯(lián)網(wǎng)產(chǎn)業(yè)之后的第三大IT經(jīng)濟(jì)增長點。隨著國際市場的快速發(fā)展,中國導(dǎo)航產(chǎn)業(yè)面臨極大機遇。中國正處于高速發(fā)展期,城市變化快、公路建設(shè)速度快、汽車保有量增長快,對導(dǎo)航產(chǎn)品的需求也就不斷增大。隨著3G的發(fā)展和國內(nèi)汽車市場持續(xù)升溫,GPS手機市場也前景看好,預(yù)計2011年,GPS手機市場份額將超過百分之十。1.2手機GPS前景隨著智能移動終端特別是智能手機的快速普及,具有定位和導(dǎo)航功能的手機正日益受到消費者的追捧。單一導(dǎo)航設(shè)備的市場迅速被導(dǎo)航手機所取代,相信不久的將來導(dǎo)航手機就會在人們的生活中普及。導(dǎo)航功能也會像相機,MP3一樣成為一款手機應(yīng)用,Google公司推出的“Turn-By-TurnNavigation”和蘋果公司推出的手機定位服務(wù)和手機廣告服務(wù)也充分說明了GPS與智能手機的結(jié)合是極具潛力的。在我國,具備GPS定位導(dǎo)航功能的手機銷量近年來一直呈增長態(tài)勢。市場研究機構(gòu)In-Stat預(yù)計,近幾年GPS技術(shù)在手機領(lǐng)域有應(yīng)用將呈爆炸式增長。中國GPS手機市場將持續(xù)上升,預(yù)計2012年中國GPS手機市場總體規(guī)模將達(dá)到4200萬臺,市場占有率將超過20%?;ヂ?lián)網(wǎng)消費調(diào)研中心ZDC對中國GPS手機市場發(fā)展現(xiàn)狀及用戶關(guān)注情況進(jìn)行分析,2010年月1-8月,GPS手機用戶關(guān)注度增長明顯,8月較1月增長近10個百分點,如圖1.1。72.9的非GPS手機用戶表示有購買GPS手機的打算??梢?,手機GPS技術(shù)市場的應(yīng)用前景非??捎^。圖1.12010年1-8年中國手機市場GPS手機關(guān)注趨勢1.3選題的目的與設(shè)計要求隨著3G時代的到來,GPS也成為了繼音樂、照相之后手機的又一款熱門的應(yīng)用,智能手機與GPS的結(jié)合必將推動GPS產(chǎn)業(yè)走向一個新的高潮,GPS手機也必將成為一種潮流和趨勢。因此,對于手機GPS的研究很有必要性。本文的設(shè)計目的在于研究基于WindowsMobile6.0的系統(tǒng)上GPS導(dǎo)航的相關(guān)工具和方法,使用dotNET2008開發(fā)環(huán)境,使用VisualC#編程實現(xiàn)對GPS數(shù)據(jù),包括經(jīng)度、緯度、衛(wèi)星個數(shù)、精確時間等信息的實時采集,并保存到手持設(shè)備數(shù)據(jù)庫(采用SQLServerCE數(shù)據(jù)庫),并可以通過用戶界面顯示。對于數(shù)據(jù)庫中標(biāo)定了的地理位置,能夠提取出當(dāng)前地理位置的名稱,并提示給用戶。手持設(shè)備數(shù)據(jù)庫中的數(shù)據(jù)能夠傳送到計算機系統(tǒng)數(shù)據(jù)庫。2相關(guān)技術(shù)2.1GPS定位原理GPS定位的基本原理是根據(jù)高速運動的衛(wèi)星瞬間位置作為已知的起算數(shù)據(jù),采用空間距離后方交會的方法,確定待測點的位置。如圖2.1所示,假設(shè)t時刻在地面待測點上安置GPS接收機,可以測定GPS信號到達(dá)接收機的時間△t,再加上接收機所接收到的衛(wèi)星星歷等其它數(shù)據(jù)可以確定四個方程式。圖2.1公式由于衛(wèi)星的位置精確可知,在GPS觀測中,我們可得到衛(wèi)星到接收機的距離,利用三維坐標(biāo)中的距離公式,利用3顆衛(wèi)星,就可以組成3個方程式,解出觀測點的位置(X,Y,Z)??紤]到衛(wèi)星的時鐘與接收機時鐘之間的誤差,實際上有4個未知數(shù),X、Y、Z和鐘差,因而需要引入第4顆衛(wèi)星,形成4個方程式進(jìn)行求解,從而得到觀測點的經(jīng)緯度和高程。四個方程式中各個參數(shù)意義如下:x、y、z為待測點坐標(biāo)的空間直角坐標(biāo)。xi、yi、zi(i=1、2、3、4)分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4在t時刻的空間直角坐標(biāo),可由衛(wèi)星導(dǎo)航電文求得。di(i=1、2、3、4)分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4到接收機之間的距離。△ti(i=1、2、3、4)分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4的信號到達(dá)接收機所經(jīng)歷的時間。

c為GPS信號的傳播速度(即光速)。

Vti(i=1、2、3、4)分別為衛(wèi)星1、衛(wèi)星2、衛(wèi)星3、衛(wèi)星4的衛(wèi)星鐘的鐘差,由衛(wèi)星星歷提供。Vto為接收機的鐘差。由以上四個方程即可解算出待測點的坐標(biāo)x、y、z和接收機的鐘差Vto。事實上,接收機往往可以鎖住4顆以上的衛(wèi)星,這時,接收機可按衛(wèi)星的星座分布分成若干組,每組4顆,然后通過算法挑選出誤差最小的一組用作定位,從而提高精度。由于衛(wèi)星運行軌道、衛(wèi)星時鐘存在誤差,大氣對流層、電離層對信號的影響,以及人為的SA保護(hù)政策,使得民用GPS的定位精度只有100米。為提高定位精度,普遍采用差分GPS(DGPS)技術(shù),建立基準(zhǔn)站(差分臺)進(jìn)行GPS觀測,利用已知的基準(zhǔn)站精確坐標(biāo),與觀測值進(jìn)行比較,從而得出一修正數(shù),并對外發(fā)布。接收機收到該修正數(shù)后,與自身的觀測值進(jìn)行比較,消去大部分誤差,得到一個比較準(zhǔn)確的位置。實驗表明,利用差分GPS,定位精度可提高到52.2GPS數(shù)據(jù)格式一般民用GPS使用的是GPS系統(tǒng)的L1載波,頻率為1575.42MHz。在這個載波頻率上面以調(diào)相方式加載了兩種不同的偽隨機噪聲碼:C/A碼和P碼。C/A碼是用于民用的測距碼,碼長為1023個碼元,即1023次從數(shù)字零到數(shù)字1的跳動,這1023個碼元每秒重復(fù)1000次,即1.023MHz,或每一百萬分之一秒跳動一次。P碼是軍用碼,碼長非常長,碼速為10.23MHz,即每千萬分之一秒跳動一次。由于GPS接收機通過對比碼元的跳動來計算從衛(wèi)星到接收機的時間,然后再轉(zhuǎn)換成距離,顯而易見,P碼的時間精度高了10倍,距離精度也就高了10倍:現(xiàn)代信號處理技術(shù)計算碼元跳動的時間精度是碼寬的百分之一,一百萬分之一秒折合出來的距離是300米,它的百分之一就是3米。而P碼的精度是這個數(shù)值的十分之一,即0.3米。換句話說,在計算某個衛(wèi)星距離接收機的實際距離的時候,C/A接收機獲取了與衛(wèi)星的距離,并不能計算出自己的位置,因為它不知道衛(wèi)星在發(fā)射電波時的位置,因此在衛(wèi)星載波上面,還加載了一個50Hz的導(dǎo)航電文,這個導(dǎo)航電文包括了:衛(wèi)星的軌道參數(shù)、時鐘參數(shù)、軌道修正參數(shù)、大氣對GPS信號折射的修正值等等。GPS接收機就是通過這些參數(shù)計算出某一時刻某顆衛(wèi)星在空間中的位置,然后再確定自己與衛(wèi)星的距離,然后再計算自己的實際位置。導(dǎo)航電文總長1500比特,在50Hz發(fā)送的情況下,每一個循環(huán)周期是30秒。NMEA協(xié)議是為了在不同的GPS(全球定位系統(tǒng))導(dǎo)航設(shè)備中建立統(tǒng)一的BTCM(海事無線電技術(shù)委員會)標(biāo)準(zhǔn),由美國國家海洋電子協(xié)會(NMEA-TheNationalMar-ineElectronicsAssocia-tion)制定的一套通訊協(xié)議。GPS接收機根據(jù)NMEA-0183協(xié)議的標(biāo)準(zhǔn)規(guī)范,將位置、速度等信息通過串口傳送到PC機、PDA等設(shè)備。NMEA-0183協(xié)議定義的語句非常多,但是常用的或者說兼容性最廣的語句只有$GPGGA、$GPGS-A、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。GPS數(shù)據(jù)格式NMEA-0183的詳細(xì)解釋如下:(1)$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,19.7,M,,,,0000*1F。每個字段含義如表2.1所示:表2.1$GPGGA解析字段例值說明字段0$GPGGA語句IDGPS定位信息字段1092204.999UTC時間,hhmmss.sss字段24250.5589緯度ddmm.mmmm字段3S緯度N(北緯)或S(南緯)字段414718.5084經(jīng)度dddmm.mmmm字段5E經(jīng)度E(東經(jīng))或W(西經(jīng))字段61GPS狀態(tài),0=未定位,1=非差分定位,2=差分定位,3=無效PPS,6=正在估算。字段704正在使用的衛(wèi)星數(shù)量(00-12)字段824.4HDOP水平精度因子(0.5-99.9)字段919.7海拔高度(-9999.9-99999.9)字段10地球橢球面相對大地水準(zhǔn)面的高度字段11差分時間字段120000差分站ID號0000-1023字段131F校驗值(2)例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A,每個字段含義如表2.2所示:表2.2$GPGSA解釋字段例值說明字段0$GPGGA$GPGSA,語句,ID當(dāng)前衛(wèi)星信息。字段1A定位模式,A=自動手動2D/3D,M=手動2D/3D。字段23定位類型,1=未定位,2=2D定位,3=3D定位。字段301PRN碼(偽隨機噪聲碼),第1信道正在使用的衛(wèi)星PRN碼編號(00)字段420PRN碼(偽隨機噪聲碼),第2信道正在使用的衛(wèi)星PRN碼編號(00)字段519PRN碼(偽隨機噪聲碼),第3信道正在使用的衛(wèi)星PRN碼編號(00)字段613PRN碼(偽隨機噪聲碼),第4信道正在使用的衛(wèi)星PRN碼編號(00)字段704PRN碼(偽隨機噪聲碼),第5信道正在使用的衛(wèi)星PRN碼編號(00)字段824.4PRN碼(偽隨機噪聲碼),第6信道正在使用的衛(wèi)星PRN碼編號(00)字段919.7PRN碼(偽隨機噪聲碼),第7信道正在使用的衛(wèi)星PRN碼編號(00)字段10PRN碼(偽隨機噪聲碼),第8信道正在使用的衛(wèi)星PRN碼編號(00)字段11PRN碼(偽隨機噪聲碼),第9信道正在使用的衛(wèi)星PRN碼編號(00)字段12PRN碼(偽隨機噪聲碼),第10信道正在使用的衛(wèi)星PRN碼編號(00)字段13PRN碼(偽隨機噪聲碼),第11信道正在使用的衛(wèi)星PRN碼編號(00)字段14PRN碼(偽隨機噪聲碼),第12信道正在使用的衛(wèi)星PRN碼編號(00)字段1540.4PDOP綜合位置精度因子(0.5-99.9)字段1624.4DOP水平精度因子(0.5-99.9)字段1732.2VDOP垂直精度因子(0.5-99.9)字段180A校驗值(3)例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,45*70,每個字段含義如表2.3所示表2.3$GPGSV解析字段例值說明字段0$GPGSV$GPGSV,語句ID,可見衛(wèi)星信息字段13本次GSV語句的總數(shù)目(1-3)字段21本條GSV語句是本次GSV語句的第幾條(1-3)字段310當(dāng)前可見衛(wèi)星總數(shù)(00-12)(前導(dǎo)位數(shù)不足則補0)字段420PRN碼(偽隨機噪聲碼)(01-32)(前導(dǎo)位數(shù)不足則補0)字段578衛(wèi)星仰角(00-90)度(前導(dǎo)位數(shù)不足則補0)字段6331衛(wèi)星方位角(00-359)度(前導(dǎo)位數(shù)不足則補0)字段745信噪比(00-99)dbHz字段801PRN碼(偽隨機噪聲碼)(01-32)(前導(dǎo)位數(shù)不足則補0)字段959衛(wèi)星仰角(00-90)度(前導(dǎo)位數(shù)不足則補0)字段10235衛(wèi)星方位角(00-359)度(前導(dǎo)位數(shù)不足則補0)字段1147信噪比(00-99)dbHz字段1222PRN碼(偽隨機噪聲碼)(01-32)(前導(dǎo)位數(shù)不足則補0)字段1341衛(wèi)星仰角(00-90)度(前導(dǎo)位數(shù)不足則補0)字段14069衛(wèi)星方位角(00-359)度(前導(dǎo)位數(shù)不足則補0)字段1545信噪比(00-99)dbHz字段1670校驗值(4)$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50每個字段含義如表2.4所示表2.4$GPRMC解析字段例值說明字段0$GPRMC$GPRMC,語句ID,推薦最小定位信息字段1024813.640UTC時間,hhmmss.sss格式字段2A狀態(tài),A=定位,V=未定位字段33158.4608緯度ddmm.mmmm,度分格式(前導(dǎo)位數(shù)不足則補0)字段4N緯度N(北緯)或S(南緯)字段511848.3737經(jīng)度dddmm.mmmm,度分格式(前導(dǎo)位數(shù)不足則補0)字段6E經(jīng)度E(東經(jīng))或W(西經(jīng))字段710.05速度,節(jié),Knots字段8324.27方位角,度字段9150706UTC日期,DDMMYY格式字段10235磁偏角,(000-180)度(前導(dǎo)位數(shù)不足則補0)字段1147磁偏角方向,E=東W=西字段12A*50校驗值(5)例:$GPVTG,89.68,T,,M,0.00,N,0.0,K*5F,每個字段含義如表2.5所示表2.5$GPVTG解析字段例值說明字段0$GPVTG$GPVTG,語句ID,地面速度信息字段189.68運動角度,000-359,(前導(dǎo)位數(shù)不足則補0)字段2TT=真北參照系字段3315運動角度,000-359,(前導(dǎo)位數(shù)不足則補0)字段4MM=磁北參照系字段50.00水平運動速度(0.00)(前導(dǎo)位數(shù)不足則補0)字段6EN=節(jié),Knots字段7N水平運動速度(0.00)(前導(dǎo)位數(shù)不足則補0)字段80.0K=公里/時,km/h字段9K*5F校驗值(6)例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D,每個字段如表2.6所示。表2.6$GPGLL解析字段例值說明字段0$GPGLL$GPGLL,語句ID,地理定位信息字段14250.5589緯度ddmm.mmmm,度分格式(前導(dǎo)位數(shù)不足則補0)字段2S緯度N(北緯)或S(南緯)字段314718.5084經(jīng)度dddmm.mmmm,度分格式(前導(dǎo)位數(shù)不足則補0)字段4E經(jīng)度E(東經(jīng))或W(西經(jīng))字段5092204.999UTC時間,hhmmss.sss格式字段6A狀態(tài),A=定位,V=未定位字段92D校驗值2.3開發(fā)環(huán)境與相關(guān)工具(1)MicrosotfVisualStudio2008。VisualStudio是微軟公司推出的開發(fā)環(huán)境,VisualStudio可以用來創(chuàng)建Windows平臺下的Windows應(yīng)用程序和網(wǎng)絡(luò)應(yīng)用程序,也可以用來創(chuàng)建網(wǎng)絡(luò)服務(wù)、智能設(shè)備應(yīng)用程序和Office插件。(2)WindowsMobile6.5。WindowsMobile,是Microsoft用于PocketPC和Smartphone的軟件平臺。WindowsMobile將熟悉的Windows桌面擴(kuò)展到了個人設(shè)備中。WindowsMobile是微軟為手持設(shè)備推出的“移動版Windows”,使用WindowsMobile操作系統(tǒng)的設(shè)備主要有PPC手機、PDA、隨身音樂播放器等。WindowsMobile操作系統(tǒng)有三種,分別是WindowsMobileStandard、WindowsMobileProfessional,WindowsMobileClassic。(3)MicrosotfActiveSync4.5。微軟的同步軟件ActiveSync可以同時支持PPC和微軟智能手機(Smartphone),它能方便地在PC與PPC或智能手機間方便地進(jìn)行數(shù)據(jù)同步.這是WindowsMobile設(shè)備(與Symbian相比)極具競爭力的優(yōu)勢.而與PC的同步對Symbian手機來說簡直是個惡夢.ActiveSync不僅可以同步文件,電子郵件及日程等,更有著許多額外的功能如同步AvantGo,SMS等.另外,WindowsMobile設(shè)備的用戶還可以通過PC來訪問互聯(lián)網(wǎng).ActiveSync可以說是PC與移動設(shè)備間的一座橋梁。(4)GPSID。MS宣稱GPSIntermediateDriver可以屏蔽所有硬件的差異,屏蔽了所有硬件的差異意味著這個庫只是支持通用的NMEA,廠商的NMEA就不能解析出來了。凡事都是有優(yōu)缺點,技術(shù)選型主要取決于需求。對這個指南針的需求比較簡單,只是需要取出方位角信息,使用GPSIntermediateDriver可以提高開發(fā)效率。(5)FackGPS。FackGPS是WindowsMobile6SDK中提供的一個小工具,為調(diào)試WindowsMobile系統(tǒng)的

GPS應(yīng)用程序但沒有GPS設(shè)備的提供了方便,由于缺乏GPS真實設(shè)備,所以,這里選擇了FackGPS。GPSID的所有設(shè)置信息都保存在注冊表中,可以通過修改注冊表來更改GPSID的設(shè)置。其中有個一個設(shè)置,可以讓GPSID從一個包含NMEA命令的.txt文件讀取GPS數(shù)據(jù),而不需要從GPS設(shè)備讀取數(shù)據(jù)。。FakeGPS的工作原理就是修改注冊表的GPSID設(shè)備,讓

GPSID從一個文本文件讀取GPS數(shù)據(jù)。而對于我們開發(fā)的應(yīng)用程序來說,跟訪問真實的設(shè)備并沒有兩樣。(6)SQLServerCE。SQLServerCE(SQLServer2005CompactEdition)是微軟推出的一個適用于嵌入到移動應(yīng)用的精簡數(shù)據(jù)庫產(chǎn)品,WindowsMobile開發(fā)人員能夠使用SQLServerCE開發(fā)出將數(shù)據(jù)管理能力延展到WindowMobile移動設(shè)備上的應(yīng)用程序。雖然SQLServerCE占用的磁盤空間只有3到5兆左右,但是它功能并沒有像它的容量那樣大幅度縮水。SQLServerCE不但提供了完整的SQL語法,包括內(nèi)部聯(lián)接、外部聯(lián)接和子查詢,還內(nèi)置了數(shù)據(jù)同步技術(shù)的支持。有一點要注意的是,SQLServer2005CompactEdition除了可以作為移動數(shù)據(jù)庫在WindowsMobile設(shè)備上運行外,它也支持在PC上存放數(shù)據(jù),為桌面的應(yīng)用程序提供數(shù)據(jù)支持。(7)Gmap.NET。GMap.NET是一個強大、免費、跨平臺、開源的.NET控件,它在WindowsForms和WPF環(huán)境中能夠通過Google,Yahoo!,Bing,OpenStreetMap,ArcGIS,Pergo,SigPac等實現(xiàn)尋找路徑、地理編碼以及地圖展示功能,并支持緩存和運行在Mobile環(huán)境中。GMap.NET是一個開源的GEO地圖定位和跟蹤程序。就像谷歌地圖、雅虎地圖一樣,可以自動計算兩地的距離,定位經(jīng)緯度,與Google地圖不同的是,該項目是建立在C#語言WinForm基礎(chǔ)上的??梢詫Φ貓D放大縮小,進(jìn)行城市標(biāo)記等??丶€以繪出兩地的行車線路或者步行線路等,而且能夠算出兩地的距離。3需求分析3.1項目概述本系統(tǒng)主要實現(xiàn)在WindowsMobile6.5平臺上實時的獲取GPS數(shù)據(jù),包括:經(jīng)度,緯度,時間,衛(wèi)星個數(shù),海拔高度,地理位置等相關(guān)的信息,并在地圖上顯示相應(yīng)的地理位置,然后將數(shù)據(jù)保存在手機的數(shù)據(jù)庫中。3.2功能需求(1)GPS數(shù)據(jù)實時獲取:能夠在WindowsMobile平臺上實現(xiàn)GPS功能的打開與關(guān)閉,實時的獲取當(dāng)前的GPS數(shù)據(jù)。(2)GPS數(shù)據(jù)存儲:能夠?qū)@取到的GPS存儲在手機的數(shù)據(jù)庫(SQLServerCE)中。(3)GPS顯示:實時采集的數(shù)據(jù)能夠以用戶界面的形式顯示,最好是以地圖的形式展示。(4)查找功能:對于數(shù)據(jù)庫中標(biāo)定了的地理位置,能夠提取出當(dāng)前地理位置的名稱。(5)同步功能:手持設(shè)備數(shù)據(jù)庫中的數(shù)據(jù)能夠傳送到計算機系統(tǒng)數(shù)據(jù)庫。3.3性能需求(1)實時性:由于GPS本身的特點需要很高的實習(xí)性,因此,系統(tǒng)運行時須確保獲取GPS數(shù)據(jù)的實時性。(2)準(zhǔn)備性:將獲取的GPS數(shù)據(jù)的誤差控件在一定的范圍內(nèi)。3.4運行需要本系統(tǒng)是基于WindowsMobile平臺開發(fā)。運行界面是WindowsMobile窗口界面。數(shù)據(jù)庫是適用于手機的SQLServerCE。同時,應(yīng)該具有適當(dāng)?shù)娜蒎e功能。遇到不可恢復(fù)的系統(tǒng)錯誤,也能保證數(shù)據(jù)的完整性。3總體設(shè)計3.1系統(tǒng)總體結(jié)構(gòu)該部分主要介紹了系統(tǒng)的整體結(jié)構(gòu),如圖3.1。一旦開啟GPS,主程序從中間驅(qū)動GPSID中獲取GPS數(shù)據(jù),并將信息顯示在用戶界面,同時,調(diào)用地圖控件的相應(yīng)函數(shù),查找相應(yīng)的地理位置信息,并在地圖上顯示。最后,將數(shù)據(jù)存入手機的數(shù)據(jù)庫中。圖3.1系統(tǒng)總體結(jié)構(gòu)根據(jù)需求分析對系統(tǒng)進(jìn)行建模,畫出系統(tǒng)的用例圖(圖3.2)、時序圖(圖3.3)以及類圖(圖3.4)。圖3.2用例圖圖3.3時序圖圖3.4類圖3.2手機GPS模塊目前,市場上提供的GPS方案主要分為單芯片、套片和模塊。其中單芯片是將GPS的兩部分——射頻與基帶集成在一顆芯片上,套片是將單獨的射頻與基帶封裝在一起,而模塊則是在射頻與基帶之外,加入了必要的外圍器件,封裝成獨立的產(chǎn)品,這樣,在手機開發(fā)過程中,GPS部分不需要太大的開發(fā)工作量,設(shè)計者只需將輸出信號與周邊硬件做個轉(zhuǎn)換即可。本文是基于WindowsMobile平臺,手機設(shè)備集成了GPS模塊。3.3數(shù)據(jù)庫設(shè)計本系統(tǒng)的數(shù)據(jù)庫主要用存儲手機GPS記錄的地理位置信息,其主要信息包括:經(jīng)度、緯度、時間、衛(wèi)星個數(shù)以及相應(yīng)地理位置等。因此,數(shù)據(jù)庫中只用一張表即可。如表3.1所示:表3.1data表列名數(shù)據(jù)類型是否為空描述idInt否主鍵(自增)latitudeString是緯度longitudeString是經(jīng)度timedatetime是當(dāng)前時間satellitesstring是衛(wèi)星數(shù)positionString是地理位置3.4GPS軟件設(shè)計3.4.1數(shù)據(jù)采集方法手機中的GPS模塊一旦啟動,會連接衛(wèi)星接收信號,通過算法計算出位置等信息,然后以NMEAdata的格式輸出。手機GPS模塊就是將接收到的衛(wèi)星信號轉(zhuǎn)換成NMEAdate的設(shè)備。目前,開發(fā)手機軟件有3種獲取GPS數(shù)據(jù)的方法:直接使用串口連接GPS接收器、GPSIntermediateDriver、使用第三方類庫(目前opennetcf提供相應(yīng)類庫)。GPS傳統(tǒng)的編程其實很麻煩,既要同串口進(jìn)行通信,又要去解析NMEA的語法,同時訪問GPS的程序會一直都在運行,這就需要保證這些訪問程序是在單獨的線程中運行。因此,傳統(tǒng)的通過串口傳輸GPS數(shù)據(jù)的開發(fā)方式是很痛苦的事情。本系統(tǒng)是采用第二種方式GPSID(GPSIntermediateDrive)獲取GPS數(shù)據(jù)。GPSIntermediateDrive(中間驅(qū)動程序,GPSID)是一個位于應(yīng)用程序和GPS設(shè)備中間層的設(shè)備驅(qū)動。GPSID是對串口操作進(jìn)行了封裝,因此對于系統(tǒng)層來說它是一個普通的驅(qū)動,是一個插在GPS設(shè)備與應(yīng)用程序之間的系統(tǒng)中間件。這樣的好處是使開發(fā)人員不需要通過串口直接訪問GPS設(shè)備,而是訪問GPSID提供的API函數(shù),然后再由GPSID去訪問GPS設(shè)備。這樣一來,編寫出來的GPS應(yīng)用程序就具有設(shè)備無關(guān)性了,也使到只要應(yīng)用GPSID就可以用相同的代碼去訪問幾乎所有類型的GPS接收器了。但現(xiàn)在隨著WinCE系統(tǒng)新版本的升級,WinCE系統(tǒng)內(nèi)置了GPSIntermediateDriver。WindowsMobile5.0以上的系統(tǒng),都內(nèi)置了GPSIntermediateDriver。能夠很方便的獲取GPS數(shù)據(jù)。通過它我們能夠很方便的取得GPS數(shù)據(jù),而且開發(fā)基于GPS定位系統(tǒng)的WinCE應(yīng)用程序也變得簡單多了。目前,GPS中間驅(qū)動程序(GPSID)正成為導(dǎo)航設(shè)備開發(fā)者手中的利器。GPSID的API函數(shù)主要有兩類:一類是gpsapi.dll函數(shù):GPSOpenDevice、GPSCloseDevice、GPSGetPosition、GPSGetDeviceState。另一類是:coredll.dll函數(shù):CreateEvent、CloseHandle、WaitForSingleObject、WaitForMultipleObjects、EventModify。3.4.2GPS類設(shè)計GPS.cs:封裝GPS操作類,比如Open(),Close(),Connect()。GpsDeviceState.cs:用于獲取目前GPS設(shè)備的狀態(tài)信息。GpsPosition.cs:每次GPS數(shù)據(jù)取得后,都會放入該類。LocationChangedEventArgs.cs:一旦位置改變,即可將新的GpsPosition獲取。DeviceStateChangedEventArgs.cs設(shè)備狀態(tài)改變事件。3.4.3窗體類設(shè)計MainForm.cs:主窗體內(nèi)包含顯示地圖控件,菜單等。Search.cs查找窗體。Gps.cs顯示獲取到的GPS信息及狀態(tài)。4詳細(xì)設(shè)計4.1模擬GPS數(shù)據(jù)(1)FackGPS安裝。在WindowsMobile6SDK安裝目錄下..\WindowsMobile6SDK\Tools\GPS\找到FakeGPS.CAB在windowsmobile中安裝。如圖4.2圖4.2FackGPS安裝(2)FackGPS運行。運行FakeGPS,GPSID的所有設(shè)置信息都保存在注冊表中,可以通過修改注冊表來更改GPSID的設(shè)置。FakeGPS的工作原理就是修改注冊表的GPSID設(shè)備,讓GPSID從一個包含NMEA命令的fakegpsdata.txt文件讀取GPS數(shù)據(jù),而不需要從GPS設(shè)備讀取數(shù)據(jù)。圖4.3FackGPS運行圖(3)fakegpsdata.txt中數(shù)據(jù)$GPGLL,4738.0173,N,12211.1874,W,191934.767,A*21$GPGSA,A,3,08,27,10,28,13,19,,,,,,,2.6,1.4,2.3*3E$GPGSV,3,1,9,8,71,307,43,27,78,59,41,3,21,47,0,10,26,283,40*77$GPGSV,3,2,9,29,13,317,0,28,37,226,37,13,32,155,36,19,37,79,42*42$GPGSV,3,3,9,134,0,0,0*46$GPRMC,191934.767,A,4738.0173,N,12211.1874,W,0.109623,12.14,291004,,*21$GPGGA,191935.767,4738.0172,N,12211.1874,W,1,06,1.4,32.9,M,-17.2,M,0.0,0000*75……4.2GPS類(1)GpsPosition.csposition定義了位置信息,其實這個類是大而全的類,把通用的NMEA可以分析的信息全部放到這個類里面。如圖4.1圖4.1GpsPosition.cs結(jié)構(gòu)(2)GpsDeviceState.cs定義GPS設(shè)備的狀態(tài)publicenumGpsServiceState:int{Off=0,On=1,StartingUp=2,ShuttingDown=3,Unloading=4,Uninitialized=5,Unknown=-1}(3)Gps.cs:Gps對象表示一臺Gps的設(shè)備,gps.Open();為打開設(shè)備,開始接受GPS信息,gps.Close();為關(guān)閉該設(shè)備。gps.DeviceStateChanged+=newDeviceStateChangedEventHandler(gps_DeviceStateChanged);和gps.LocationChanged+=newLocationChangedEventHandler(gps_LocationChanged);表示訂閱設(shè)備狀態(tài)變化信息和位置變化信息。從GpsPosition的類定義知道,當(dāng)位置發(fā)生變化,也就是回調(diào)gps_LocationChanged的時候,可以取出經(jīng)緯度,海拔等多方面的信息。因此只要訂閱該消息就可以完成幾乎所有的GPS開發(fā)。//調(diào)用API的函數(shù)聲明:#regionPInvokestogpsapi.dll[DllImport("gpsapi.dll")]staticexternIntPtrGPSOpenDevice(IntPtrhNewLocationData,IntPtrhDeviceStateChange,stringszDeviceName,intdwFlags);……#endregion//打開GPS設(shè)備,準(zhǔn)備從設(shè)備獲取數(shù)據(jù)publicvoidOpen(){if(!Opened){//創(chuàng)建GPS相關(guān)事件newLocationHandle=CreateEvent(IntPtr.Zero,0,0,null);deviceStateChangedHandle=CreateEvent(IntPtr.Zero,0,0,null);stopHandle=CreateEvent(IntPtr.Zero,0,0,null);gpsHandle=GPSOpenDevice(newLocationHandle,deviceStateChangedHandle,null,0);//創(chuàng)建線程if(locationChanged!=null||deviceStateChanged!=null){CreateGpsEventThread();}}}//關(guān)閉GPS設(shè)備publicvoidClose(){if(gpsHandle!=IntPtr.Zero){GPSCloseDevice(gpsHandle);gpsHandle=IntPtr.Zero;}if(stopHandle!=IntPtr.Zero){EventModify(stopHandle,eventSet);}lock(this){if(newLocationHandle!=IntPtr.Zero){CloseHandle(newLocationHandle);newLocationHandle=IntPtr.Zero;}if(deviceStateChangedHandle!=IntPtr.Zero){CloseHandle(deviceStateChangedHandle);deviceStateChangedHandle=IntPtr.Zero;}if(stopHandle!=IntPtr.Zero){CloseHandle(stopHandle);stopHandle=IntPtr.Zero;}}}///查詢設(shè)備狀態(tài)publicGpsDeviceStateGetDeviceState(){GpsDeviceStatedevice=null;IntPtrpGpsDevice=Utils.LocalAlloc(GpsDeviceState.GpsDeviceStructureSize);Marshal.WriteInt32(pGpsDevice,1);Marshal.WriteInt32(pGpsDevice,4,GpsDeviceState.GpsDeviceStructureSize);intresult=GPSGetDeviceState(pGpsDevice);if(result==0){device=newGpsDeviceState(pGpsDevice);}Utils.LocalFree(pGpsDevice);returndevice;}(4)DeviceStateChangedEventArgs.cs設(shè)備狀態(tài)改變的事件參數(shù)publicclassDeviceStateChangedEventArgs:EventArgs{publicDeviceStateChangedEventArgs(GpsDeviceStatedeviceState){this.deviceState=deviceState;}publicGpsDeviceStateDeviceState{get{returndeviceState;}}privateGpsDeviceStatedeviceState;}(5)LocationChangedEventArgs.cs地理位置改變的事件參數(shù)publicclassLocationChangedEventArgs:EventArgs{publicLocationChangedEventArgs(GpsPositionposition){this.position=position;}publicGpsPositionPosition{get{returnposition;}}privateGpsPositionposition;}4.3數(shù)據(jù)存儲設(shè)計將獲取到的經(jīng)緯度,時間,衛(wèi)星數(shù)等信息,寫入到手機數(shù)據(jù)庫中。SqlCeConnectionconn=null;try{conn=newSqlCeConnection("DataSource=\\gps.sdf;password=111;encryptdatabase=true");conn.Open();SqlCeCommandcmd=conn.CreateCommand();cmd.CommandText="insertintoposition(latitude,longitude,satellites,time)values('"+latitude+"','"+longitude+"','"+satellites+"','"+time+"')";cmd.ExecuteNonQuery();}catch(SqlCeExceptionex){MessageBox.Show(ex.Message);}finally{conn.Close();}4.4地圖模塊設(shè)計4.4.1初始化地圖控件使用地圖控件前,需要初始化一些變量和事件,初始化代碼如下所示:internalGMap.NET.WindowsForms.GMapControlMainMap;……//MainMapthis.MainMap.BackColor=System.Drawing.Color.White;this.MainMap.CanDragMap=true;this.MainMap.Dock=System.Windows.Forms.DockStyle.Fill;this.MainMap.Location=newSystem.Drawing.Point(0,0);this.MainMap.MarkersEnabled=true;this.MainMap.MaxZoom=2;this.MainMap.MinZoom=2;this.MainMap.MouseWheelZoomType=GMap.NET.MouseWheelZoomType.MousePositionAndCenter;this.MainMap.Name="MainMap";this.MainMap.PolygonsEnabled=true;this.MainMap.RoutesEnabled=true;this.MainMap.ShowTileGridLines=false;this.MainMap.Size=newSystem.Drawing.Size(480,696);this.MainMap.TabIndex=0;this.MainMap.Zoom=0;……#ifDEBUGMainMap.Manager.Mode=AccessMode.ServerAndCache;menuItemServerAndCache.Checked=true;menuItemEnableGrid.Checked=true;menuItemGPSenabled.Checked=false;MainMap.ShowTileGridLines=true;#elseMainMap.Manager.Mode=AccessMode.CacheOnly;menuItemCacheOnly.Checked=true;#endifMainMap.MapType=MapType.GoogleMapChina;MainMap.MaxZoom=17;MainMap.MinZoom=1;MainMap.Zoom=11;MainMap.CurrentPosition=start;4.4.2GPS數(shù)據(jù)獲取GPS啟動后先查詢GPS模塊的工作狀態(tài),GPSDeviceState.cs是用于取得目前GPS設(shè)備的狀態(tài)信息,在調(diào)用GPSDeviceState.cs取得目前GPS設(shè)備的狀態(tài)信息后,然后啟動一個工作線程,以創(chuàng)建GPS事件對象。基本流程:先通過調(diào)用CreateEvent來創(chuàng)建Handles,然后調(diào)用GPSOpenDeviceAPI函數(shù)將Handle傳入得到GPS設(shè)備的Handle。得到GPS設(shè)備的Handle之后,可再創(chuàng)建一個線程來監(jiān)聽GPS數(shù)據(jù)及設(shè)備狀態(tài)。然后,再通過調(diào)用CreateGpsEventThread方法來創(chuàng)建線程。當(dāng)GPS設(shè)備的狀態(tài)改變時,就可以調(diào)用DeviceStateChanged事件取得當(dāng)前設(shè)備的狀態(tài)。當(dāng)GPS設(shè)備的位置改變時,就可以調(diào)用LocationChanged事件取得當(dāng)前的坐標(biāo)。然后,再使用WaitForSingleObject()函數(shù)或WaitForMultipleObjects()函數(shù)來處理事件通知。最后,通過重復(fù)調(diào)用Device-StateChanged事件、LocationChanged事件、WaitForSingleObject()函數(shù)或WaitFor-MultipleObjects()函數(shù),和調(diào)用GPSGetPosition()以獲取完整的GPS信息。這樣一個基本的獲取GPS數(shù)據(jù)的過程就完成了。關(guān)鍵代碼如下:privateEventHandlerupdateDataHandler;GpsDeviceStatedevice=null;GpsPositionposition=null;…….updateDataHandler=newEventHandler(UpdateData);gps.DeviceStateChanged+=newDeviceStateChangedEventHandler(gps_DeviceStateChanged);gps.LocationChanged+=newLocationChangedEventHandler(gps_LocationChanged);……..//gps位置改變事件voidgps_LocationChanged(objectsender,LocationChangedEventArgsargs){try{varposition=args.Position;if(position!=null){count++;if(position.Time.HasValue&&position.Latitude.HasValue&&position.Longitude.HasValue){if(!TimeUTC.HasValue){TimeUTC=position.Time;Lat=position.Latitude;Lng=position.Longitude;}if(TimeUTC.HasValue&&position.Time-TimeUTC.Value>=delay){Delta=gps.GetDistance(position.Latitude.Value,position.Longitude.Value,Lat.Value,Lng.Value);Total+=Delta;Lat=position.Latitude;Lng=position.Longitude;TimeUTC=position.Time;AddToLogCurrentInfo(position);}}else{Lat=position.Latitude;Lng=position.Longitude;TimeUTC=position.Time;}……//gps狀態(tài)改變voidgps_DeviceStateChanged(objectsender,DeviceStateChangedEventArgsargs){device=args.DeviceState;Invoke(updateDataHandler);}4.4.3地圖定位設(shè)計主程序獲取GPS數(shù)據(jù),提取其中的經(jīng)緯度信息,將經(jīng)緯度傳遞給地圖控件,地圖控件調(diào)用MainMap.CurrentPosition將地圖以此位置居中顯示。//隨位置改變地圖中心改變if(menuItemGPSenabled.Checked){MainMap.CurrentPosition=newPointLatLng(data.Latitude.Value,data.Longitude.Value);}4.4.4查找功能的實現(xiàn)Search.cs實現(xiàn)位置的查找功能。首先,調(diào)用地圖控件的GMaps.Instance.GetLatLngFromGeocoder方法查出要查找的位置的地理信息。然后,實例化一下地圖標(biāo)記GMapMarkeraddress=newGMapMarkerTransparentGoogleGreen(pos.Value)用以向用戶展示查找的位置,并加入標(biāo)注信息。代碼如下:PointLatLng?pos=GMaps.Instance.GetLatLngFromGeocoder(textAddress.Text,outstatus);if(pos!=null&&status==GeoCoderStatusCode.G_GEO_SUCCESS){GMapMarkeraddress=newGMapMarkerTransparentGoogleGreen(pos.Value);address.ToolTipMode=MarkerTooltipMode.Always;address.ToolTipText=textAddress.Text;Main.objects.Markers.Add(address);Main.MainMap.CurrentPosition=address.Position;Main.menuItemGotoMap_Click(null,null);}4.4.5其它功能實現(xiàn)(1)放大、縮小、重新加載地圖功能的實現(xiàn)。在放大、縮小菜單的單擊事件中設(shè)置地圖控件的Zoom屬性,可以改變地圖大小,從而實現(xiàn)地圖的縮放。實現(xiàn)主要代碼如下://放大privatevoidmenuItem4_Click(objectsender,EventArgse){MainMap.Zoom=(int)(MainMap.Zoom)+1;}//縮小privatevoidmenuItem5_Click(objectsender,EventArgse){MainMap.Zoom=(int)(MainMap.Zoom)-1;}//重新加載地圖privatevoidmenuItem27_Click(obje

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論