3

CLLocationManager オブジェクトの didUpdateHeading イベントを使用して、結果の head.x および head.y の値を、コンパスの画像にプロットできる角度に変換するにはどうすればよいですか?

4

3 に答える 3

3

見出し度については、 andの代わりにmagneticHeadingandtrueHeadingプロパティを使用できます。xy

trueHeading

真北に対する方位 (度単位で測定)。(読み取り専用)

@property(readonly, nonatomic) CLLocationDirection trueHeading

討論

このプロパティの値は、地理的な北極を指す見出しを表します。このプロパティの値は、デバイスの物理的な向きやインターフェイスの向きに関係なく、常にデバイスの上部を基準にして報告されます。値 0 は真北を表し、90 は真東を表し、180 は真南を表します。負の値は、見出しを特定できなかったことを示します。

于 2010-01-11T17:50:16.163 に答える
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 に答える
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 に答える