Leren werken met het kompas
Datum: 2 november 2009
Door: Spencer
In deze tutorial gaan we onze richting bepalen, gebruik makend van het ingebouwde kompas van de iPhone 3GS. We gaan een kleine applicatie bouwen die de richting waarnaar onze iPhone wijst toont op het scherm.
Voor deze tutorial ga ik ervan uit dat je de tutorial Leren werken met de gps hebt gelezen. Zeer veel aspecten zijn immers hetzelfde in deze 2 tutorials.
Op de iPhone 3G was geen kompas aanwezig. De enige manier om daar je richting te bepalen was door te wandelen, en door de heading te berekenen aan de hand van je gps coordinaten. Jammer genoeg is deze oplossing nauwelijks bruikbaar op wandelsnelheid.
Gelukkig is de iPhone 3GS wél voorzien van een kompas en van een API om de heading van je telefoon te raadplegen. Dit laat je toe om je kijkrichting in je app te krijgen, zelfs als je stilstaat. Tijd om te beginnen.
Maak een nieuw project van het type View-based application. Noem je project "beginning compass". Xcode maakt nu een heleboel files zelf aan die ons op weg helpen.
In deze app gaan we slechts 1 waarde terugkrijgen, namelijk de richting. We hebben dus slechts 1 control nodig op onze view. We gaan hiervoor een control van het type UILabel gebruiken.
Open beginning_compassViewController.h en voeg een UILabel control toe. Maak tevens de property aan.
Open beginning_compassViewController.m en @synthesize je label. Zorg ervoor dat je je label released in de dealloc functie.
Dubbelklik de resources folder en dubbelklik op beginning_compassViewController.xib om Interface Builder te openen. Sleep 2 controls van het type UILabel naar je view. Het resultaat zou er ongeveer zo moeten uitzien.
Koppel de property in de view controller en het heading UILabel in de view aan mekaar via de Connections Inspector.
Op dit moment kun je je project builden en uitvoeren op je iPhone maar er gaat nog niet veel gebeuren. Het is tijd om de kompas functionaliteit toe te voegen.
Voeg CoreLocation.framework toe aan de Frameworks tree.
We gaan terug een instance van CLLocationManager aanmaken in beginning_compassViewController.h. Noem deze *locationManager. Vergeet @synthesize en release in de dealloc functie in beginning_compassViewController.m niet.
Deze keer gaan we 2 andere optionele functies uit CLLocationManagerDelegate uitwerken in onze .m file, namelijk
locationManager:didUpdateHeading:
en
locationManagerShouldDisplayHeadingCalibration:
De eerste functie wordt aangeroepen als de heading van je iPhone wijzigt (als je om je as draait). In de tweede functie kun je aangeven of je het kompas calibratie scherm wil laten verschijnen als er storingen in het magnetisch veld zijn. In deze tutorial maakt dat niet zoveel uit, dus return NO of YES in de tweede functie.
De eerste functie gaan we gebruiken om de tekst van ons label te vullen met de heading. In de viewDidLoad functie alloceren we onze location manager, zetten onze delegate op self en vragen we om heading updates door te sturen.
Nu is het tijd om je applicatie te builden en te installeren op je iPhone. Je gaat best even naar buiten zodat je een nauwkeuriger kompas signaal hebt.
In toekomstige tutorials gaan we meer geavanceerde dingen met de gps ontvanger en het kompas doen.






