iPhone developer: Zjištění polohy a rychlosti v iPhone
Pro práci s lokací použijeme CoreLocation framework, který si přidáme do projektu
(screen ukazuje přidání v XCode 4, ve starší verzi XCode se do nabídky dostanete pokud kliknete pravým tlačítkem na Frameworks v projektu a vyberete z kontextového menu položku Add):
V případě že máte CoreLocation.framework v projektu přidán, objeví se vám v levé nabídce a můžete jej začít využívat.
Před používáním si jej musíme naincludovat:
1 |
#import <coreLocation/CoreLocation.h> |
Nyní si upravíme interface třídy, ve které jej budeme používat:
1 2 3 4 5 |
@interface TextLocationView : UIViewController <cllocationManagerDelegate> { CLLocationManager *locationManager; } |
Rovnou jsme si vytvořili interface pro proměnnou typu CLLocationManager, kterou budeme potřebovat. Pro ukázku si dopíšeme vytvoření instance LocationManageru přímo do funkce viewDidLoad, kde se bude volat hned po startu daného view (předpokládá se projektu se šablonou Window-Based-Application):
1 2 3 4 |
locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; //spustime zjistovani lokace [locationManager startUpdatingLocation]; |
Nyní stačí přetížit funkci LocationManager, kterou třída LocationManager obsahuje a dopsat si do ní vlastní ošetření včetně zjištění polohy:
1 2 3 4 5 6 7 8 9 |
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"lat: %f, longt: %f, speed: %f", newLocation.coordinate.latitude, newLocation.coordinate.longitude, newLocation.speed); } |
V našem případě se jedná pouze o výstup do konzoly systému, což pro ukázku stačí. Výstup bude vypadat například:
1 2 3 4 5 |
lat: 37.469807, longt: -122.293248, speed: 33.470000 lat: 37.470049, longt: -122.293473, speed: 33.380000 lat: 37.470291, longt: -122.293706, speed: 33.240000 lat: 37.470521, longt: -122.293940, speed: 33.280000 lat: 37.470749, longt: -122.294174, speed: 33.340000 |