6

在谷歌上搜索后,我问自己:

是否可以使用 iPhone 3G 的 GPS 传感器构建指南针(简单显示航向/方向)?

我怀疑,这只有在设备移动时才有可能。

任何想法表示赞赏。

4

9 回答 9

9

用原来的 iPhone 和 iPhone 3G,没有。

iPhone 3GS 将于 2009 年 6 月上市,是的。它包括一个允许指南针应用的磁力计。

核心位置框架CLHeading类中提供了这些信息。您可以通过该键检查设备是否支持该功能magnetometer

正如其他人所说,使用 iPhone 3G 时,您可以在手机移动时分辨出移动的方向,但您无法分辨出手机的方向来向用户指示方向。当然可以指导用户以某种方式定位手机,结合移动可以准确地指示方向。

于 2009-05-07T12:09:07.580 回答
4

是的,你是对的,这是唯一的方法。虽然我认为一旦你知道了方向,你就可以通过加速度传感器跟踪手机的小动作,并准确地绘制出方向,即使原来的动作停止了。

注意:这是过时的信息,在 3G 出来之前它是正确的。不幸的是,我无法删除已接受的答案,所以请看下面。

于 2009-05-07T11:29:51.497 回答
4

作为对此的更新,iPhone 3GS 确实包含一个可用于应用程序的实际可用的数字罗盘。它使编写这样的应用程序变得微不足道。

查看CLHeading类和magneticHeading属性。

http://developer.apple.com/iphone/library/documentation/CoreLocation/Reference/CLHeading_Class/Reference/Reference.html

假设手机有时间在地理上定位自己,您还可以获得真正的北航向。

于 2009-07-13T21:22:59.013 回答
2

通过扫描可用的应用程序,我得出结论,有两种方法可以为当前的 iPhone 3G 制作指南针。

  1. 要求手机移动。使用 GPS 数据的差异来确定方向。
  2. 要求用户将手机指向太阳。使用 GPS 和时间信息来确定方向。
于 2009-05-07T11:50:25.470 回答
2

指南针只会显示您移动的方向。它不会告诉您 iPhone 所在的方向。因此,即使使用加速度计来跟踪 iPhone 是否已转动/移动,也不一定会让您在显示屏上指向北方。

(即,您不会知道它是侧向移动还是我们是否将 iPhone 倒置或其他任何东西。您只会知道您在哪里移动......)

编辑 2010 年 12 月: 由于撰写了这篇原始帖子,iPhone 3GS(于 09 年夏季推出)和更新的型号都有电子指南针。这个指南针可以在不移动时显示正确的方向......(这意味着指南针现在能够指向北方,无论 iPhone 持有或移动的方向如何。)

于 2009-05-07T11:57:10.977 回答
2

您只需要实现位置管理器功能即可找到您的 iPhone 指向的确切方向。

所以,你可以检查一下:

CLLocationManager *locationManager; [locationManager startUpdatingHeading];

并且每当您调用 startUpdatingHeading() 时,它都会调用您需要从位置管理器覆盖的“- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading”方法。

就是这样,您可以通过 newHeading.magneticHeading 或 newHeading.trueHeading 找到 iPhone 3GS 指向的方向。

您会惊讶地发现,您可以得到与磁罗盘给出的完全相同的方向。

于 2010-09-10T06:27:15.683 回答
1

附带说明一下,iphone 中的加速度计不会仅跟踪旋转,因此您无法对位置和方向进行正确的 6 轴惯性跟踪。

于 2009-05-08T08:59:59.430 回答
1

我认为你的怀疑是正确的,GPS 位置是一个没有任何方向信息的单点。要确定方向,您需要两个点来创建方向向量。汽车导航系统的工作方式相同。如果汽车正在移动,它们只能显示方向矢量。

于 2009-05-07T11:28:58.190 回答
1

如果您实现模拟时钟,则可以使用以下说明叠加罗盘表盘。

这可用于“校准”指南针并使用加速度计在手机移动时保持指向北方。

显然这不是超级准确......“高科技问题的低技术解决方案”

(指令取自http://www.qwerty.co.za

在北半球,将手表放在平坦的地面上,将时针指向太阳的方向。南北线再次将时针和 12 点钟线之间的角度分成两半。

在南半球,将手表放在平坦的地面上,将数字 12 指向太阳。南北线是将时针与 12 点钟线之间的夹角分成两半的线。

于 2009-05-07T12:21:36.957 回答