在谷歌上搜索后,我问自己:
是否可以使用 iPhone 3G 的 GPS 传感器构建指南针(简单显示航向/方向)?
我怀疑,这只有在设备移动时才有可能。
任何想法表示赞赏。
在谷歌上搜索后,我问自己:
是否可以使用 iPhone 3G 的 GPS 传感器构建指南针(简单显示航向/方向)?
我怀疑,这只有在设备移动时才有可能。
任何想法表示赞赏。
用原来的 iPhone 和 iPhone 3G,没有。
iPhone 3GS 将于 2009 年 6 月上市,是的。它包括一个允许指南针应用的磁力计。
核心位置框架在CLHeading类中提供了这些信息。您可以通过该键检查设备是否支持该功能magnetometer
。
正如其他人所说,使用 iPhone 3G 时,您可以在手机移动时分辨出移动的方向,但您无法分辨出手机的方向来向用户指示方向。当然可以指导用户以某种方式定位手机,结合移动可以准确地指示方向。
是的,你是对的,这是唯一的方法。虽然我认为一旦你知道了方向,你就可以通过加速度传感器跟踪手机的小动作,并准确地绘制出方向,即使原来的动作停止了。
注意:这是过时的信息,在 3G 出来之前它是正确的。不幸的是,我无法删除已接受的答案,所以请看下面。
作为对此的更新,iPhone 3GS 确实包含一个可用于应用程序的实际可用的数字罗盘。它使编写这样的应用程序变得微不足道。
查看CLHeading
类和magneticHeading
属性。
假设手机有时间在地理上定位自己,您还可以获得真正的北航向。
通过扫描可用的应用程序,我得出结论,有两种方法可以为当前的 iPhone 3G 制作指南针。
指南针只会显示您移动的方向。它不会告诉您 iPhone 所在的方向。因此,即使使用加速度计来跟踪 iPhone 是否已转动/移动,也不一定会让您在显示屏上指向北方。
(即,您不会知道它是侧向移动还是我们是否将 iPhone 倒置或其他任何东西。您只会知道您在哪里移动......)
编辑 2010 年 12 月: 由于撰写了这篇原始帖子,iPhone 3GS(于 09 年夏季推出)和更新的型号都有电子指南针。这个指南针可以在不移动时显示正确的方向......(这意味着指南针现在能够指向北方,无论 iPhone 持有或移动的方向如何。)
您只需要实现位置管理器功能即可找到您的 iPhone 指向的确切方向。
所以,你可以检查一下:
CLLocationManager *locationManager; [locationManager startUpdatingHeading];
并且每当您调用 startUpdatingHeading() 时,它都会调用您需要从位置管理器覆盖的“- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading”方法。
就是这样,您可以通过 newHeading.magneticHeading 或 newHeading.trueHeading 找到 iPhone 3GS 指向的方向。
您会惊讶地发现,您可以得到与磁罗盘给出的完全相同的方向。
附带说明一下,iphone 中的加速度计不会仅跟踪旋转,因此您无法对位置和方向进行正确的 6 轴惯性跟踪。
我认为你的怀疑是正确的,GPS 位置是一个没有任何方向信息的单点。要确定方向,您需要两个点来创建方向向量。汽车导航系统的工作方式相同。如果汽车正在移动,它们只能显示方向矢量。
如果您实现模拟时钟,则可以使用以下说明叠加罗盘表盘。
这可用于“校准”指南针并使用加速度计在手机移动时保持指向北方。
显然这不是超级准确......“高科技问题的低技术解决方案”
(指令取自http://www.qwerty.co.za)
在北半球,将手表放在平坦的地面上,将时针指向太阳的方向。南北线再次将时针和 12 点钟线之间的角度分成两半。
在南半球,将手表放在平坦的地面上,将数字 12 指向太阳。南北线是将时针与 12 点钟线之间的夹角分成两半的线。