【问题标题】:How to build a compass with the iPhone?如何用 iPhone 制作指南针?
【发布时间】:2010-10-24 11:06:45
【问题描述】:

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

是否可以用 iPhone 3G 的 GPS 传感器?

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

感谢任何想法。

【问题讨论】:

  • 我很确定我刚刚在 iPhone 的电视广告上看到了这一点......
  • 是的,只有在设备移动时才有可能。例如,比较 Garmin 60C 和 60Csx 型号。后者内置了电子罗盘。但是,iPhone 没有内置移动/转动传感器吗?来自该输入和 GPS 传感器的组合可能会创建(至少)近似罗盘(当然,作为罗盘“初始化”的一部分,仍然需要稍微移动设备)。
  • 请注意,即使是 Garmin 60Csx 中的电子罗盘,与 25 美元的磁针罗盘相比也非常不准确。我还没有遇到适合实际导航的电子罗盘——我见过的最好的只能相信告诉你NE和N的区别。

标签: iphone navigation gps magnetometer


【解决方案1】:

对于原始 iPhone 和 iPhone 3G,没有。

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

Core Location FrameworkCLHeading 类中提供此信息。您可以使用magnetometer 键检查device supports 是否有此功能。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 同意...见我上面的评论:)
    【解决方案3】:

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

    查看CLHeading 类和magneticHeading 属性。

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 只是不要试图在晚上找到回家的路。 ;-)
      【解决方案5】:

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

      所以,你可以检查一下:

      CLLocationManager *locationManager; [locationManager startUpdatingHeading];

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

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

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

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            如果你实现了一个模拟时钟,你可以使用下面的说明来叠加一个罗盘表盘。

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

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

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

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

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

            【讨论】:

            • 北半球不需要平地? ;)
            【解决方案9】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-05-07
              • 1970-01-01
              • 1970-01-01
              • 2011-02-03
              相关资源
              最近更新 更多