1 gps定位原理ios
gps是美國開發的一套實時定位系統。在導航應用中,重點關注的是用戶的gps接受機,根據接收機的數據從而獲取當前的位置和時間信息。大概瞭解下定位原理:算法
因爲咱們是用於上位機的開發,接收器遵照的是NMEA0183協議,某種程度上咱們經過協議直接獲得當前所在的經緯度信息。
首先咱們必需要了解的是地球的參考座標系,以便於咱們使用地圖時把獲得的座標轉換成導航所使用的座標系。NMEA0183使用的參考座標系是WGS-84座標系。
其次,必須瞭解三顆衛星能夠定位,另一顆衛星是爲了消除偏差,因此咱們一般須要4顆衛星來進行定位。因爲如今使用的gps芯片是遵照nmea0183協議,因此會直接給出當前的經緯度信息,因此具體的算法請參考相關文檔。
2 gps數據獲取spa
gps信息一般由讀取串口而得到。因爲會不停的從串口獲得gps信息,因此在導航系統中須要另外開一個線程去獲取數據。
另外在不一樣的系統中咱們須要採起不一樣的策略去獲取gps數據,例如在wince中咱們能夠直接讀取串口信息,而在Android和ios中咱們能夠直接經過其系統上層API直接傳遞gps信息給導航引擎。
3 gps數據分析線程
一般咱們從串口會讀出如下數據: $GPGGA,235949.042,0000.0000,N,00000.0000,E,0,00,,0.0,M,0.0,M,,0000*45 $GPGLL,0000.0000,N,00000.0000,E,235949.042,V,N*47 $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GPGSV,1,1,00*79 $GPRMC,235949.042,V,0000.0000,N,00000.0000,E,,,140209,,,N*7E $GPVTG,,T,,M,,N,,K,N*2C 因此必須分析如下協議 $GPGGA、$GPGLL、$GPGSA、$GPGSV、$GPRMC、$GPVTG。具體協議分析能夠參考相關資料。通常來講,咱們須要獲取當前的經緯度信息,當前時間。另外爲了給客戶展現當前的gps狀態,須要獲取當前接受到衛星的顆數,用來判斷信號的強弱等等。