Frage

Mit dem didUpdateHeading Veranstaltung CLLocationManager Objekts, wie konvertiere ich die resultierenden heading.x und heading.y Werte in Grad kann es auf ein Bild eines Kompasses plotten?

War es hilfreich?

Lösung

Für Schriften Grad können Sie magneticHeading und trueHeading Eigenschaften statt x und y trueHeading.

  

trueHeading

     

Die Überschrift (gemessen in Grad) relativ zu wahren Norden. (Read-only)

@property(readonly, nonatomic) CLLocationDirection trueHeading
     

Diskussion

     

Der Wert in dieser Eigenschaft stellt die Überschrift, dass die Punkte in Richtung des geographischen Nordpol. Der Wert in dieser Eigenschaft wird immer relativ die Vorrichtung nach oben gemeldet, und zwar unabhängig von den Geräten physischer oder Schnittstelle Orientierung. Der Wert 0 steht für wahren Norden, 90 aufgrund Ostens repräsentiert, 180 genau nach Süden darstellt, und so weiter. Ein negativer Wert zeigt an, dass die Position nicht bestimmt werden kann.

Andere Tipps

Das ist, wie ich die UIImageView mit dem Bild eines Kompasses gedreht. Die Nord Nadel wurde ursprünglich nach oben zeigt im Bild.

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

Versuchen Sie:

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

   CLLocationDirection trueNorth = [newHeading trueHeading];

   CLLocationDirection magneticNorth = [newHeading magneticHeading];

}

CLLocationDirection ist typedef zu verdoppeln und um die echte oder magnetische Orientierung in Grad zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top