iPhone開發進階(10)--- 在程序中使用GPS
這一回簡單地介紹一下GPS的使用方法。使用GPS大致分下面兩步。
- 添加 CoreLocation.framework。
- 生成 CLLocationManager 測量位置。
測試代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
// LocationViewCtrl.h #import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @interface LocationViewCtrl : UIViewController <CLLocationManagerDelegate>{ CLLocationManager *man; } @property(nonatomic, retain) CLLocationManager *man; @end LocationViewCtrl.m #import "LocationViewCtrl.h" #import <CoreLocation/CoreLocation.h> @implementation LocationViewCtrl @synthesize man; - (void)viewDidLoad { [super viewDidLoad]; man = [[CLLocationManager alloc] init]; // 如果可以利用本地服務時 if([man locationServicesEnabled]){ // 接收事件的實例 man.delegate = self; // 發生事件的的最小距離間隔(缺省是不指定) man.distanceFilter = kCLDistanceFilterNone; // 精度 (缺省是Best) man.desiredAccuracy = kCLLocationAccuracyBest; // 開始測量 [man startUpdatingLocation]; } } // 如果GPS測量成果以下的函數被調用 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ // 取得經緯度 CLLocationCoordinate2D coordinate = newLocation.coordinate; CLLocationDegrees latitude = coordinate.latitude; CLLocationDegrees longitude = coordinate.longitude; // 取得精度 CLLocationAccuracy horizontal = newLocation.horizontalAccuracy; CLLocationAccuracy vertical = newLocation.verticalAccuracy; // 取得高度 CLLocationDistance altitude = newLocation.altitude; // 取得時刻 NSDate *timestamp = [newLocation timestamp]; // 以下面的格式輸出 format: <latitude>, <longitude>> +/- <accuracy>m @ <date-time> NSLog([newLocation description]); // 與上次測量地點的間隔距離 if(oldLocation != nil){ CLLocationDistance d = [newLocation getDistanceFrom:oldLocation]; NSLog([NSString stringWithFormat:@"%f", d]); } } // 如果GPS測量失敗了,下面的函數被調用 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ NSLog([error localizedDescription]); } ... |