7三/100
iPhone开发进阶(10)— 在程序中使用 GPS
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]); } ... |
测量精度有以下几类,精度越高越消耗电力。
| kCLLocationAccuracyNearestTenMeters | 10m |
| kCLLocationAccuracyHundredMeters | 100m |
| kCLLocationAccuracyKilometer | 1km |
| kCLLocationAccuracyThreeKilometers | 3km |
因为在模拟器上不能设置经纬度,所以只能在实际设备中测试你的GPS程序。
相关文章
- iPhone开发之深入浅出 (3) --- ARC之前世今生 - (2012-02-19)
- iPhone开发之深入浅出 (2) --- ARC之@property使用 - (2012-01-04)
- iPhone开发之深入浅出 (1) --- ARC是什么 - (2012-01-01)
- iPhone开发技巧之调试篇(3)--- 程序Crash后的调试技巧 - (2011-11-06)
- iPhone开发之游戏篇(3)--- cocos2d的Actions构成 - (2010-07-05)
- iPhone开发之游戏篇(2) --- cocos2d的Actions - (2010-07-03)
- iPhone开发之游戏篇(1) --- cocos2d的基本概念 - (2010-07-01)
- iPhone开发进阶(11)--- 多线程的使用与注意事项 - (2010-03-09)
- iPhone开发进阶(9)--- 用SQLite管理数据库 - (2010-03-06)
- iPhone开发进阶(8)--- 检测屏幕触摸事件 - (2010-03-04)
- iPhone开发进阶(7)--- 利用ModalViewController切换View - (2010-03-02)
- iPhone开发进阶(6)--- 编程定制UIButton - (2010-02-27)
- iPhone开发进阶(5) --- 编程定制UIViewController - (2010-02-25)
- iPhone开发进阶(4) --- 使用Makefile自动编译iPhone程序 - (2010-02-23)
- iPhone开发进阶(3) --- iPhone应用程序的启动过程 - (2010-02-21)
- iPhone开发进阶(2) --- iPhone应用程序/项目的构成 - (2010-02-19)
- iPhone开发进阶(1) --- 深入理解iPhone OS/SDK与Objective-C 2.0 - (2010-02-17)
- iPhone、Android、Symbian … 移动设备应用程序开发的趋势与对策 - (2010-02-14)
- 使用org-mode来GTD(3)--- iPhone中使用org-mode - (2010-02-06)
- iPhone开发入门(11)--- 在App Store上发布程序 - (2010-01-21)
- iPhone开发入门(10)--- 设备上运行程序 - (2010-01-19)
- iPhone开发入门(9)--- 实际开发中的应用技巧 - (2010-01-16)
- iPhone开发入门(8)--- 程序画面与控件调整 - (2010-01-05)
- iPhone开发入门(7)--- 从C/C++语言到Objective-C语言 - (2009-12-31)
- iPhone开发入门(6)--- Action与Objective-C - (2009-12-19)