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

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

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

任何想法表示赞赏。

有帮助吗?

解决方案

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

注意:这是过时的信息,直到3G出现才正确。不幸的是我无法删除已接受的答案,所以请看下面。

其他提示

对于初代 iPhone 和 iPhone 3G,没有。

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

核心位置框架 在中提供此信息 CL标题 班级。您可以检查是否 设备支持 这个函数与 magnetometer 钥匙。

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

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

请参阅 CLHeading 类和 magneticHeading 属性。

http://developer.apple的.com / iphone /库/文档/ CoreLocation /参考/ CLHeading_Class /参考/的reference.html

假设手机有时间在地理位置定位,您还可以获得真正的北方标题。

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

  1. 要求手机移动。使用GPS数据的差异来确定方向。
  2. 要求用户将手机对准太阳。使用GPS和时间信息确定方向。

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

所以,您可以查看:

CLLocationManager * locationManager; [locationManager startUpdatingHeading];

无论何时调用startUpdatingHeading(),它都会调用 " - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading"您需要从位置管理器覆盖的方法。

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

您会惊讶地发现,您可以获得与磁罗盘相同的方向。

指南针只会显示您正在移动的方向。它不会告诉你iPhone的位置。因此,即使使用加速度计跟踪iPhone已经转动/移动,也不一定让你指向显示器的北方。

(也就是说,你不会知道它是否会向侧面移动,或者我们是否将iPhone颠倒过来或者其他任何东西。你只会知道你在哪里移动......)

2010年12月编辑: 自从这篇原创文章发表以来,iPhone 3GS(09年夏季推出)和更新的型号都配备了电子罗盘。这个指南针可以在不移动的情况下显示正确的方向......(这意味着指南针现在可以指向北方,无论iPhone的方向或移动方向如何。)

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

如果您实施模拟时钟,可以使用以下说明叠加指南针拨号。

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

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

(来自 http://www.qwerty.co.za的说明)

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

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

作为旁注,iphone中的加速度计不会仅跟踪平移的旋转,因此您无法对位置和方向进行适当的6轴惯性跟踪。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top