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