4. 使用CLLocationManager获得设备当前经纬度信息

懵懂的女人 提交于 2019-12-07 15:19:28

4.  使用CLLocationManager获得设备当前经纬度信息

几乎所有的苹果设备都有GPS模块,通过GPS模块可以获得设备的当前位置信息,可以通过CLLocationManager和其代理类CLLocationManagerDelegate来获得启动和停止跟踪,并获得设备当前经的纬度信息。另外,还可以为设备进入某个特定区域做出提示。通过下面的程序,当用户点击按钮,开始跟踪设备,并通过UILabel实时显示当前设备的经纬度信息。实现步骤如下所示。
创建项目并为项目添加CoreLocation.framework框架。
在界面上添加UIButton和UILabel组件。
在.h中实现CLLocationManagerDelegate代理,声明CLLocationManager属性和UILabel属性,并声明UIButton的点击事件方法。
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
@interface AmakerViewController : UIViewController<CLLocationManagerDelegate>
- (IBAction)start:(id)sender;
@property (strong, nonatomic) IBOutlet UILabel *myLocatoinInfo;
@property (strong,nonatomic) CLLocationManager *lm;
@end
在viewDidLoad方法中判断定位服务是否可以利用,实例化并指定属性。
- (void)viewDidLoad
{
    [super viewDidLoad];
           if ([CLLocationManager locationServicesEnabled]) {
        self.lm = [[CLLocationManager alloc]init];
        self.lm.delegate = self;
        // 最小距离
        self.lm.distanceFilter=kCLDistanceFilterNone;
    }else{
        NSLog(@"定位服务不可利用");
    }
}
在CLLocationManagerDelegate的更新方法中实时获得最新位置信息,并显示在UILabel中。
- (void)locationManager:(CLLocationManager *)manager
           didUpdateToLocation:(CLLocation *)newLocation
                          fromLocation:(CLLocation *)oldLocation{
    self.myLocatoinInfo.text = [NSString stringWithFormat:@"[%f,%f]",newLocation.coordinate.latitude,newLocation.coordinate.longitude];
}
在UIButton的点击事件中启动跟踪。
- (IBAction)start:(id)sender {
    if (self.lm!=nil) {
        [self.lm startUpdatingLocation];
    }
}
程序的运行结果如下图所示。


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!