2

目前我设法使用以下代码获得方向度数:

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°

我将每个direction值从0to分配360给它imageListpictureBox. (目前我有 36 个不同箭头方向的指南针图像,每个代表10度数)

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

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

编辑:我正在使用Honeywell Dolphin 6000 Scanphone设备

4

4 回答 4

2

如果我正确地阅读了您的问题,那么听起来您正在尝试在位置固定且仅旋转设备时确定航向。

不幸的是,GPS 无法满足您的需求。

您使用的公式和GetPosition.Heading都是基于对当前纬度/经度和之前的纬度/经度进行采样计算得出的航向。因此,如果您没有朝某个方向移动(或移动速度极慢),那么您当前和之前的纬度/经度值将实际上是相同的,这会降低计算航向的准确性。

当您的位置相对固定时,获得航向的唯一可靠方法是使用一些内置的磁罗盘或陀螺罗盘。

于 2014-03-05T10:05:58.327 回答
2

Honeywell Dolphin 6000文档没有提到磁力计或指南针,因此您可能是 SOL。但是,如果确实有,那么您应该能够在SDK中找到访问它的方法

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

于 2014-03-12T02:31:06.297 回答
1

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

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

要知道您在静止时握住设备的方向,您必须使用磁力计。一些现代智能手机,如 iPhone 或 android 内置了该功能。

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

于 2014-03-10T18:54:32.547 回答
1

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

通过使用GPS 中级驱动程序GetPosition.Heading将为您提供当前前进的方向。

GPS_POSITION 文档中所述,

"flHeading
"Heading, in degrees. A heading of zero is true north."
于 2014-03-05T07:03:53.960 回答