我已经设法使用CLLocationManager获取罗盘标题,但因为我的应用已经使用CMMotionManager,我想使用专门的CMMotionManager测量标题。
与所有Apple模糊文档一样,您必须猜测如何使用他们的API。
我试图用它来衡量标题
[self.motionManager setMagnetometerUpdateInterval:1.0/30.0]; //30 Hz
[self.motionManager startMagnetometerUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMMagnetometerData *magnetometerData, NSError *error) {
CMMagneticField compass = magnetometerData.magneticField;
NSLog(@"x: %f y:%f z:%f", compass.x, compass.y, compass.z);
}];
问题是这个块只运行几秒钟然后停止运行。
是否有任何关于如何使用CMMotionManager专门测量航向的示例?
感谢。
答案 0 :(得分:1)
显然,最好的方法是使用CoreLocation,直到Apple创建合适的文档。
答案 1 :(得分:0)
如果没有实际尝试此操作,我建议使用[NSOperationQueue mainQueue]
而不是currentQueue。通常,您只从操作中调用currentQueue以获取对启动它的队列的引用。
答案 2 :(得分:0)
我建议您不致电start...UpdatesToQueue:withHandler:
。这需要使用后台线程,并且管理起来非常棘手。你可能只是在主线程上解决所有问题。这是一项先进的技术,你不需要它。
相反,只需start
,然后使用NSTimer或类似方法重复轮询CMMotionManager。