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状态,须要获取当前接受到卫星的颗数,用来判断信号的强弱等等。