Hauptmenü

Werkzeuge

Kategorien

Archiv

Kompass, Richtung, Geschwindigkeit und Position in einer iOS App

Erstellt in IPhone SDK am 26. Februar 2012 vom Daschmi

Möchte man den GPS Sensor und den Kompass für die Positions und Richtungsbestimmung benutzen, so kann das CoreLocation Framework verwendet werden. Als erstes muss man das Framework dem Projekt hinzufügen und anschließend in seine Klasse mit folgendem Code includieren:

#import <CoreLocation/CoreLocation.h> 

Nun muss man eine Delegate Klasse mit dem Interface CLLocationManagerDelegate implementieren. Hier gibt es zwei wesentliche Funktionen die man implementieren kann.

Um den Kompass zu nutzen muss folgende Funktion verwendet werden. Die Funktion bekommt newHeading übergeben, in diesem Objekt sind die Daten des Kompass und des Gyrosensors enthalten. Siehe auch iOS Referenz.

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

    NSLog(@"%@", newHeading);

}

Eine weitere Funktion kann implementiert werden um die Geschwidigkeit, Position und Richtung zu bestimmen.

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

NSLog(@"Position:       %f:%f", here.longitude, here.latitude);
NSLog(@"Richtung: %f", [newLocation course]);
NSLog(@"Geschwindigkeit in km/h %.2f", (newLocation.speed * 3.6));

}

Damit die Funktionen auch aufgerufen werden muss natürlich der Delegate definiert werden:

    locationManager = [[CLLocationManager alloc] init];
    locationManager.delegate = self;
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;

    // Für Geschwindigkeit, Richtung und Position
    [locationManager startUpdatingLocation];

    // Für Kompass und Gyrosensor Funktion
    [locationManager startUpdatingHeading];