Vb.net 如何知道gps设备指向哪个方向?

Vb.net 如何知道gps设备指向哪个方向?,vb.net,gps,windows-mobile,direction,honeywell,Vb.net,Gps,Windows Mobile,Direction,Honeywell,目前,我使用以下代码获取方向度: d = Math.Atan2(Math.Sin(long2 - long1) * Math.Cos(lat2), _ Math.Cos(lat1) * Math.Sin(lat2) - Math.Sin(lat1) * Math.Cos(lat2) * Math.Cos(long2 - long1)) Dim direction As Double = (RadToDeg(d) + 360.0) Mod 360 在我的例子中,假设我得到了250.65

目前,我使用以下代码获取方向度:

d = Math.Atan2(Math.Sin(long2 - long1) * Math.Cos(lat2), _
    Math.Cos(lat1) * Math.Sin(lat2) - Math.Sin(lat1) * Math.Cos(lat2) * Math.Cos(long2 - long1))

Dim direction As Double = (RadToDeg(d) + 360.0) Mod 360
在我的例子中,假设我得到了
250.65°

我将
0
360
方向
值分配给
imageList
中加载到
pictureBox
中的特定图像。(目前我有36个不同箭头方向的指南针图像,每个都代表
10
degrees)

当我的设备指向北方时,箭头图像显示的方向正确,但当我旋转设备时(指向非北方的任何地方),箭头图像不会改变,意味着它不再显示正确的方向

所以我的问题是,是否有可能知道gps设备指向哪个方向

编辑:我正在使用设备

“如何知道gps设备指向哪个方向?”

通过使用,
GetPosition.Heading
将为您提供当前的航向

如报告所述


如果我读对了你的问题,听起来好像你在试图确定一个方向,而你的位置是固定的,你只是在旋转设备

不幸的是,你所寻找的是不可能与全球定位系统

您正在使用的公式和
GetPosition.Heading
都是基于采样当前纬度/经度和以前的纬度/经度计算出的航向。因此,如果您没有朝某个方向移动(或移动速度非常慢),那么当前和以前的纬度/经度值实际上是相同的,这会降低计算航向的精度


当你的位置相对固定时,获得航向的唯一可靠方法是获得一个磁罗盘或陀螺仪罗盘,一些设备可能内置了磁罗盘。

你必须区分你移动的方向,即所谓的方位或航向。 以及您查看或握住设备的方向。(想象你坐在一辆向北行驶的公共汽车上(航向=0°),在那里你朝西方向拍了一张照片,航向=270°)

(消费者)GPS接收器总是只返回航向(或方位),尽管有些API有时不幸地称之为航向

要知道你站着不动时拿着设备的方向,你必须使用磁强计。一些现代智能手机,如iphone或android,都内置了这种功能

附加提示:

如果您的设备具有GPS,请不要通过您的公式或其他公式计算位置,最好从GPS Api获取值。这要准确得多。GPS芯片不仅可以通过位置变化来计算方向,还可以使用物理多普勒频移。

霍尼韦尔海豚6000没有提到磁强计或指南针,所以你可能是索尔。但是,如果它确实有一个,那么您应该能够在


我建议下载和查看SDK附带的任何API和文档,并查找磁强计或指南针的参考资料。Microsoft没有标准API来访问Windows Mobile中的这些传感器,因此您需要霍尼韦尔的SDK来获取这些信息。

我已经尝试过了。但是
GetPosition.Heading
value似乎不准确,甚至不完全符合我的意思。我使用的是Dolphin 6000扫描电话霍尼韦尔装置,我相信它内置了磁罗盘,但我不知道如何从中检索信息。所以,只有通过磁强计才能知道我们在静止状态下握住装置的方向?我正在使用这个设备,但现在的问题是一些文件说它有磁强计,一些文件说它没有。我被扭曲了“微软没有标准的API来访问Windows Mobile中的传感器”:-如果这是真的,那么这就足够结束我在寻找答案时的痛苦了!。我有霍尼韦尔的SDK,没有与磁强计或GPS相关的API。所以我想我需要一个新设备:(
"flHeading
"Heading, in degrees. A heading of zero is true north."