2010-01-11 8 views

Répondre

3

Pour les positions degres pouvez utiliser magneticHeading et trueHeading propriétés au lieu de x et y.

trueHeading

Le cap (mesuré en degrés) par rapport au nord vrai. (Lecture seule)

@property(readonly, nonatomic) CLLocationDirection trueHeading 

Discussion

La valeur de cette propriété représente la rubrique qui pointe vers le pôle Nord géographique. La valeur de cette propriété est toujours indiquée par rapport au sommet du périphérique, quelle que soit l'orientation physique ou de l'interface du périphérique. La valeur 0 représente le nord vrai, 90 représente le plein est, 180 le plein sud et ainsi de suite. Une valeur négative indique que le titre n'a pas pu être déterminé.

1

Essayez:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { 

    CLLocationDirection trueNorth = [newHeading trueHeading]; 

    CLLocationDirection magneticNorth = [newHeading magneticHeading]; 

} 

CLLocationDirection est typedef double et vous obtiendrez la tête magnétique ou en degrés.

+0

true n'est pas un nom de variable valide. –

1

Voici comment j'ai fait pivoter la vue d'image avec l'image d'une boussole. L'aiguille nord était à l'origine pointée vers le haut dans l'image.

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)]; 
     }