定位功能---封装的一个获取当前位置的经纬度信息的类
2015-10-13 20:12
633 查看
声明部分LocationManager.h
实现部分LocationManager.m
调用
#import <Foundation/Foundation.h> #import <CoreLocation/CoreLocation.h> //声明这个block typedef void(^GetLocationInformation)(CLLocation *location); //定位管理 @interface LocationManager : NSObject <CLLocationManagerDelegate> { } @property (nonatomic, strong) CLLocationManager *manager; //定义一个返回定位信息的block @property (nonatomic, copy) GetLocationInformation callback; //初始化管理器 + (LocationManager *)shareSingleton; //获取用户定位信息 + (void)getUserLocation:(GetLocationInformation)block; @end
实现部分LocationManager.m
#import "LocationManager.h" //单例所指向的内存区域,整个App进程只有一次初始化 static LocationManager *manager = nil; @implementation LocationManager + (LocationManager *)shareSingleton { @synchronized (self) { if (!manager) { manager = [[LocationManager alloc] init]; } } return manager; } - (id)init { self = [super init]; if (self) { //系统的定位管理器 self.manager = [[CLLocationManager alloc] init]; self.manager.delegate = self; //定位精度 self.manager.desiredAccuracy = kCLLocationAccuracyBest; //请求授权 [self.manager requestAlwaysAuthorization]; } return self; } /* 针对系统定位的顶层封装的好处 1.子视图控制器或其他组件可以用更少的代码完成相应的工作。 2.底层内容或者调用改变,只需改变中间的封装层。对于各个组件并无影响。 [LocationManager getUserLocation:^(CLLocation *location) { }]; */ + (void)getUserLocation:(GetLocationInformation)block { if (!manager) { manager = [LocationManager shareSingleton]; } manager.callback = block; [manager.manager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { _callback([locations lastObject]); [manager stopUpdatingLocation]; } @end
调用
//经纬度 NSString *longitude; NSString *latitude; //获取用户当前的经纬度 [LocationManager getUserLocation:^(CLLocation *location) { //拿到经纬度就可以去拼接参数拿数据了 longitude = [NSString stringWithFormat:@"%lf", location.coordinate.longitude]; latitude = [NSString stringWithFormat:@"%lf", location.coordinate.latitude]; }];
相关文章推荐
- UFT的工具简介
- lintcode 容易题:Recover Rotated Sorted Array恢复旋转排序数组
- OpenCV学习--saturate_cast防止数据溢出
- AsyncTask实现多线程断点续传
- 使用Service服务下载网络图片并写入sdCard
- AsyncTask实现多线程断点续传
- 第2章 HelloWorld
- 很久没有写代码日记了。
- [Leetcode]Subsets II
- 欢迎使用CSDN-markdown编辑器
- leetcode Ugly Number II(需要复习)
- FZU 1683 纪念SlingShot
- leetcode之路038 Count and Say
- java中由控制台输入文字和数的方法
- Jsp页面的路径问题
- 程序员使用Node的十个技巧
- uitableviewcell 自适应大小 参考
- WebBrowser内嵌页面的跨域调用问题
- MongoDB基本使用
- 建立一个swap文件增加虚拟内存