目前我设法使用以下代码获得方向度:
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
的每个0
值分配给360
中加载imageList
的{{1}}的特定图像。 (目前我有36个不同箭头方向的罗盘图像,每个代表pictureBox
度)
当我的设备指向北方时,箭头图像显示正确的方向,但是当我旋转设备(指向任何非北方的地方)时,箭头图像不会改变,意味着它不再显示正确的方向。
所以我的问题是,是否有可能知道gps设备指向哪个方向?
修改:我正在使用Honeywell Dolphin 6000 Scanphone设备
答案 0 :(得分:2)
如果我正在正确地阅读您的问题,听起来您正在尝试确定您的位置是固定的,而您只是在旋转设备。
不幸的是,GPS无法满足您的需求。
您使用的公式和GetPosition.Heading
都是基于对当前纬度/经度和先前纬度/经度进行采样的计算标题。因此,如果你没有向一个方向移动(或移动非常缓慢),那么你当前和之前的纬度/经度值实际上是相同的,这会降低计算出的标题的准确度。
当你的位置相对固定时获得航向的唯一可靠方法是获得一个磁性或陀螺仪指南针,这是一些内置设备。
答案 1 :(得分:2)
霍尼韦尔Dolphin 6000 documentation没有提到磁力计或指南针,所以你可能是SOL。但是,如果它有一个,那么你应该能够找到在SDK
中访问它的方法我建议下载并查看SDK附带的任何API和文档,并查找磁力计或指南针的参考。 Microsoft没有标准API来访问Windows Mobile中的这些传感器,因此您需要使用霍尼韦尔的SDK来获取该信息。
答案 2 :(得分:1)
“如何知道gps设备指向哪个方向?”
使用GPS Intermediate Driver,GetPosition.Heading
将为您提供当前的方向。
如GPS_POSITION documentation中所述,
"flHeading
"Heading, in degrees. A heading of zero is true north."
答案 3 :(得分:1)
您必须区分您正在移动的方向,即所谓的方位或路线。 以及您正在寻找或拿着设备的方向。 (想想你坐在一辆向北行驶的公共汽车(路线= 0°),在那里你向西方向拍照。heading = 270°)
(消费者 - )GPS接收器总是只返回路线(或方位),虽然有些API不幸的是它有时称之为。
要知道静止时握住设备的方向,必须使用磁力计。一些现代智能手机,如iPhone或机器人都可以构建。
Additonal提示:
如果您的设备有GPS,请不要通过您或其他公式计算位置,最好从GPS Api中获取值。这更加精确。 GPS芯片不仅可以通过位置变化来调整方向,还可以使用物理多普勒频移。