博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
封装CLLocationManager定位获取经纬度
阅读量:4645 次
发布时间:2019-06-09

本文共 2326 字,大约阅读时间需要 7 分钟。

创建调用方法,在.h文件里

#import 
@interface RMMapLocation : NSObject{ void (^saveGpsCallBack)(double lattitude,double longitude);}+ (void)getGps:(void(^)(double lattitude,double longitude))block;+ (void)stop;
在.m文件里进行方法的实现

#import "RMMapLocation.h"@interface RMMapLocation ()
@property (strong, nonatomic)CLLocationManager *locManager;@end@implementation RMMapLocation+ (instancetype)sharedGpsManager{ static id mapLocation; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ if (!mapLocation) { mapLocation = [[RMMapLocation alloc] init]; } }); return mapLocation;}- (instancetype)init{ self = [super init]; if (self) { [self getCurrentLocation]; } return self;}- (void)getCurrentLocation{ self.locManager = [[CLLocationManager alloc] init]; self.locManager.delegate = self; self.locManager.desiredAccuracy = kCLLocationAccuracyBest; self.locManager.distanceFilter = 10.0;}- (void)getGps:(void (^)(double lat, double lng))gps{ if ([CLLocationManager locationServicesEnabled] == FALSE) { return; } saveGpsCallBack = [gps copy]; [self.locManager startUpdatingLocation];}+ (void)getGps:(void (^)(double, double))block{ [[RMMapLocation sharedGpsManager] getGps:block];}- (void)stop{ [self.locManager stopUpdatingLocation];}+ (void)stop{ [[RMMapLocation sharedGpsManager] stop];}#pragma mark - locationManagerDelegate- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{ RMLog(@"%f,%f",newLocation.coordinate.latitude,newLocation.coordinate.longitude); double latitude = newLocation.coordinate.latitude; double longitude = newLocation.coordinate.longitude; if (saveGpsCallBack) { saveGpsCallBack(latitude,longitude); }}- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{ RMLog(@"%@",error);// [RMUtils showMessage:@"定位失败"];}
在须要调用的文件里引入头文件后调用方法的实现(如需仅仅定位一次,则调用stop方法就可以)

[RMMapLocation getGps:^(double lattitude, double longitude) {        RMLog(@"%f---%f",lattitude,longitude);}];

demo地址:http://download.csdn.net/detail/sinat_28585351/9491130

 https://github.com/Raymon-lau/CLLocationManager

转载于:https://www.cnblogs.com/jhcelue/p/7246744.html

你可能感兴趣的文章
Django框架restful序列化get/post/delete/put请求接口设计(高级版)
查看>>
携程greenlet模块使用
查看>>
测试人员如何逃过“背锅侠”宿命?
查看>>
Leetcode: Multiply Strings
查看>>
DOM—addEventListener() & removeEventListener()
查看>>
MyBatis映射配置文件详解
查看>>
采用CDN加速后,如何在程序里获取用户IP地址
查看>>
oracle 角色
查看>>
【AnjularJS系列概况】适用场景
查看>>
SecureCRT卡死的问题
查看>>
053-002
查看>>
用Python 写一个机器人陪你聊天(文尾有彩蛋)
查看>>
Django 中使用权限认证
查看>>
zendframework配置篇
查看>>
油价的秘密
查看>>
SQL Server 用链接服务器 同步MySQL
查看>>
file-API 实现移动端 添加图片 预览缩略图(自己学习)
查看>>
javascript 老王开车去东北
查看>>
mybatis知识点
查看>>
app 应用
查看>>