获取iPhone地理数据

时间:2013-03-30 12:31:44

标签: iphone ios objective-c geolocation augmented-reality

我正在开发增强现实应用程序,我需要使用iPhone传感器来获取以下信息/数据:

  • 地理纬度,经度和海拔高度(提供相对于地球表面和平均海平面的位置)
  • 电话视点中心标题(0°= N,90°= E,180°= S,270°= W)
  • 电话视点中央高程(0°=水平,-90°=垂直向下,+ 90°=垂直向上)
  • 手机倾斜(0°=纵向/竖直,90°=横向/顶部向左,180°=横向/顶部向下,270°=纵向/俯视点)
  • 垂直对接的电话角度(即沿着标称的从上到下)
  • 水平对角的手机角度(即,沿着名义上的一侧到另一侧)

我已经知道找到纬度,经度和高度的热点,我想知道我可以用什么样的API或库来查找其他数据,比如电话角度和电话视角等。我会使用哪种API?一些示例代码?链接?讨论?我只想弄清楚如何找到这些数据!

2 个答案:

答案 0 :(得分:2)

您提到的信息可以通过CoreLocation和CoreMotion API获得(正如Jeremy在iOS Dev Scout Facebook Group上所提到的。

你可以

  • 位置传感器(aGPS,Cell Tower,WiFi) - 纬度,经度,海拔高度,速度,航线等。
  • 陀螺仪&加速度计 - 设备的旋转和平移。
  • 磁力计 - 北方和真北。

示例AR项目在iOS Developer Library中名为pARk

产生此示例项目的伴随WWDC会话是2011年,名为423:了解Core Motion。

查看与Core Motion相关的WWDC 2012会议,以加强您在这些领域的知识。

希望这会有所帮助。有了这些信息,不难从CoreLocation(第一点)和CoreMotion(接下来的5点)中获得所需的价值。

答案 1 :(得分:0)

Core Motion 框架添加到您的项目中。

创建 CMMotionManager 的实例:

_motionManager = [[CMMotionManager alloc] init];
_motionManager.deviceMotionUpdateInterval = 1.00/60.00;
[_motionManager startDeviceMotionUpdates];

获取CMDeviceMotion参考:

CMDeviceMotion *currentDeviceMotion = _motionManager.deviceMotion;

获得态度(Pitch,Roll和Yaw的组合):

CMAttitude *currentAttitude = currentDeviceMotion.attitude;

要获得音高(围绕穿过iPhone的横轴旋转):

currentAttitude.pitch

要获得滚动(从纵向轴绕自上而下旋转):

currentAttitude.roll

要获得偏航(围绕垂直穿过iPhone的轴旋转):

currentAttitude.yaw

这有助于获取角度和倾斜等其他设备数据,并且当与核心位置框架结合使用时,您应该能够获得所需的一切。