NMEA gps没有获得正确的坐标格式

时间:2012-05-10 18:08:39

标签: c# windows google-maps-api-3 gps nmea

我正在使用THIS文章和示例来测试我的gps。 首先,我必须说程序真的很棒,但我当然需要一些帮助。

第一

所以我需要的是以“正常”(我的知识正常)欧洲格式获取坐标,例如十进制为16,445554477 ... 在这里,我得到的度数很好,但我需要十进制值。当我尝试在我的程序中输入十进制值时,我不知道如何使用它们,因为我不熟悉这种格式。例如,我有5600,35568的东西...我不知道如何在谷歌地图中代表它。

SECOND

我正在将数据从gps录制到数据库中。问题是我在一秒内得到2-4条记录。如何使其达到每秒一个数据?我试图查看代码但没有成功。

THIRD - 以及最后一次

如何将这些数据从第一个问题实施到Google maps API v3?

第一个问题是主要问题。其他两个只有在有人知道该做什么的时候。

我相信很多人和我一样有同样的问题。 当然,有很多人解决了这个“问题”。 请给我一些例子。

有一个很好的编码:)

干杯!

2 个答案:

答案 0 :(得分:1)

<强>第一
你需要parse your NMEA string,你应该感兴趣的字符串是RMC

$GPRMC,092750.000,A,5321.6802,N,00630.3372,W,0.02,31.66,280511,,,A*43

这包含纬度和经度的信息。要将它们从度数转换为x y坐标,请检查此thread。使用WGS84将它们转换为X Y坐标后,您就可以在Google地图中使用它们。
第二
通常GPS数据接收间隔是1(一)秒。我不知道你是怎么在一秒内得到2-4条记录的。但是我建议你在每秒后使用一个计时器并获取记录,只存储你需要的记录,就像你需要存储GPRMC字符串中可用的基于位置的数据一样。请查看此链接Writing Your Own GPS Applications: Part 2
第三
如果您想根据Google地图中的第一个问题显示排名,您会在Google Maps API找到很多帮助。我没有使用这个API,但我使用过android。

答案 1 :(得分:0)

我在toptechboy.com找到的一些代码

 degWhole=float(int(GPS.longitude/100)); //gives me the whole degree part of Longitude

 degDec = (GPS.longitude - degWhole*100)/60; //give me fractional part of longitude

 deg = degWhole + degDec; //Gives complete correct decimal form of Longitude degrees

  if (GPS.lon=='W') {  //If you are in Western Hemisphere, longitude degrees should be negative
    deg= (-1)*deg;
  }

希望它有所帮助...