使用 CLLocationManager 对象的 didUpdateHeading 事件,如何将生成的 heading.x 和 heading.y 值转换为可以绘制到指南针图像上的度数?
问问题
8532 次
3 回答
3
对于标题度数,您可以使用magneticHeading
andtrueHeading
属性而不是x
and y
。
真航向
相对于真北的航向(以度为单位)。(只读)
@property(readonly, nonatomic) CLLocationDirection trueHeading
讨论
此属性中的值表示指向地理北极的航向。此属性中的值始终相对于设备顶部报告,无论设备的物理或界面方向如何。值 0 表示正北,90 表示正东,180 表示正南,依此类推。负值表示无法确定航向。
于 2010-01-11T17:50:16.163 回答
1
尝试:
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
CLLocationDirection trueNorth = [newHeading trueHeading];
CLLocationDirection magneticNorth = [newHeading magneticHeading];
}
CLLocationDirection 是 typedef double 类型,因此您可以获得以度数为单位的真航向或磁航向。
于 2010-01-11T17:56:04.873 回答
1
这就是我使用指南针图像旋转 uiimageview 的方式。北针最初在图像中指向上方。
if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
NSLog(@"UIInterfaceOrientationLandscapeLeft");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading - 90) *3.14/180)*-1) )];
}else if (self.interfaceOrientation == UIInterfaceOrientationLandscapeRight){
NSLog(@"UIInterfaceOrientationLandscapeRight");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading + 90) *3.14/180)*-1))];
}else if (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){
NSLog(@"UIInterfaceOrientationPortraitUpsideDown");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((((newHeading.magneticHeading + 180) *3.14/180)*-1) )];
}else{
NSLog(@"Portrait");
[self.compassImageViewIphone setTransform:CGAffineTransformMakeRotation((newHeading.magneticHeading *3.14/180)*-1)];
}
于 2012-05-12T09:46:34.070 回答