基于MaPX的校園導航系統設計
2.2 電子地圖基本功能實現
電子地圖基本功能包括選擇、標注、縮小、放大、漫游等。采用MapX可以很容易的實現這些功能,下面以縮小功能為例,簡單介紹一下程序里如何實現地圖縮小。
添加一個新的Toolbar資源。輸人標題“IDR_TOOL_BARMAP”。在“IDR_TOOLBARMAP”下添加按鈕,在其上繪制縮小圖形來表示“縮小”,其ID為ID_MAP_TOOL_ZOOMOUT。打開類向導.選擇視圖類CMapXView.為菜單項ID_MAP_TOOL_ZOOMOUT添加COOMMAND消息映射函數OnMapToolZoomout(),并編輯代碼如下:本文引用地址:http://www.104case.com/article/197856.htm
編譯運行程序.點擊縮小按鈕,在電子地圖上單擊鼠標就會實現電子地圖的縮小功能。可用相同方法實現其他標準工具的功能。
2.3 GPS數據的接收和處理
此模塊完成了從串口讀取數據,并對數據按照GPS所遵循的NMEA0183協議進行處理,得出經緯度坐標等信息的功能。此模塊包括兩個部分串口通信和數據處理。
由于GPS模塊每一秒更新一次數據,當上空有4顆衛星時串口會源源不斷的接收到定位數據.為了在對串口實時監控的同時還可以在前臺進行一些其他的操作。采用基于多線程的CSerialPort類的串口通信方法可以很好的解決這一問題。
此模塊的工作流程可分為以下幾步:(1)利用CSerial-Port的InitPort()初始化串口配置。(2)如果配置成功用StartMonitoring()打開串口并創建監視串口的線程。(3)在相應的類里添加響應WM_COMM_RXCHAR消息的消息處理函數,并且在其中做接收字符處理。(4)添加定時器.在OnTimer中處理NMEA 0183格式的GPS定位數據.將提取到的緯度數據保存到相應類上的成員變量中。
2.4 目標定位和播報
該模塊從GPS數據處理模塊中得到經緯度坐標等信息,并且把它賦值給目標圖元,通過定時器更新圖元位置從而完成實時定位。
由于程序實時接收定位數據來更新圖元的位置.就需要程序頻繁的刷新整個圖層,就會影響效率。動態圖層的目的是為了加速圖層的刷新率從而提高效率,設置動態圖層后。每次刷新都只刷新動態圖層,這樣就很好的解決了這個問題。示例代碼如下:
程序最后運行界面如下:
3 結束語
本文在GIS二次開發日新月益的背景下.結合校園實際特點開發了基于MapX的校園導航系統。經過調試,程序運行穩定,實現了電子地圖放大、縮小、漫游等功能。程序由Mi-crosoft Visual C++6.0編譯、在Windows XP下運行通過。
評論