文档章节

IOS 8 基本定位实现

 钟淳亚
发布于 2015/10/15 20:03
字数 403
阅读 16
收藏 0

首先在项目中导入定位所需的库,Build Phases --> Link Binary With Libraries -->CoreLocation.framework

在Info.plist文件中加入字段NSLocationWhenInUseUsageDescription或者NSLocationAlwaysUsageDescription,前者是应用使用时可定位,后者是后台可定位,根据需要设置,并设置为YES

其次在AppDelegate.m中导入所需头文件,并且遵循定位协议

#import <CoreLocation/CoreLocation.h>
@interface AppDelegate ()<CLLocationManagerDelegate>
@property (strong, nonatomic) CLLocationManager *locationManager;
@end

可以编写一个函数启动定位,并在didFinishLaunchingWithOptions中调用

- (void)startingLocation {
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    self.locationManager.distanceFilter = 10.0f;
    [self.locationManager requestWhenInUseAuthorization];
    [self.locationManager startUpdatingLocation];
}

实现定位协议方法didUpdateLocations和didFailWithError

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
    // 如果需要多次定位则不要此句
    [self.locationManager stopUpdatingLocation];
    
    CLLocation *curLocation = [locations lastObject];
    // 所在位置经纬度
    NSString *latitude = [NSString stringWithFormat:@"%f", curLocation.coordinate.latitude];
    NSString *longitude = [NSString stringWithFormat:@"%f", curLocation.coordinate.longitude];
    // 根据经纬度获得当前城市名
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation:curLocation completionHandler:^(NSArray *array, NSError *error) {
        if (array.count > 0) {
            CLPlacemark *placeMark = [array objectAtIndex:0];
            NSString *city = placeMark.locality;
            // 直辖市可能需要通过以下判断获取
            if (!city) {
                city = placeMark.administrativeArea;
            }
            LogBlue(@"定位城市:%@", city);
        }else if (error == nil && [array count] == 0) {
            LogRed(@"%@", @"无任何信息");
        }else if (error != nil) {
            LogRed(@"%@", @"定位错误");
            LogRed(@"%@", error);
        }
    }];
}
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    NSLog(@"%@", error);
    if ([error code] == kCLErrorDenied) {
        // 访问被拒绝
        LogRed(@"访问被拒绝");
    }else if ([error code] == kCLErrorLocationUnknown) {
        // 无法获取位置信息
        LogRed(@"无法获取位置信息");
    }
}

最后,如果只需要经纬度怎不需要逆地址解析,如果需要城市名要注意获得的城市后面带有“市”,需根据需求自行处理。

© 著作权归作者所有

共有 人打赏支持
下一篇: IOS UIApplication
粉丝 0
博文 3
码字总数 1315
作品 0
南京
私信 提问
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
371
0
Core Location in i​OS 8

自从 iPhone 存在以来,位置服务就一直处于非常重要的位置。Maps.app 是第一代 iPhone 里杀手锏的功能之一。Core Location API 也在 iPhone OS SDK 最初的公开版本里就存在了。每一次发布 iO...

nerozhao
2015/05/29
0
0
Phonegap各类商业插件

【Phonegap商业插件服务】[目前插件已经支持到Phonegap最新版本] 1.phonegap-百度社会化分享-andriod插件 v2.0 【该插件支持微信分享和朋友圈分享,qq好友分享,微博分享】 2.phonegap百度社...

夜澜小雨
2015/07/15
1K
0
疯狂ios讲义之使用CoreLocation定位(1)

9.1 iOS的定位支持 iOS设备支持的定位方式有多种,最早期的iPhone只支持通过运营商的基站信号进行定位,后来iOS系统开始引入WiFi支持,从而允许iOS设备通过周围的WiFi信号进行定位。 从iPhon...

博文视点
2014/04/02
1K
1
迈绝伦团队工作汇总(22号未发内容补充)

项目负责人:余志恒 up_java后台:无 mz_java后台:完成抢客首页定位功能 bwk后台:无 项目负责人:季景胜 up_Android:无 upzg_Android:无 mzqk_Android:完成抢客分享页面与提示语的修改 ...

风化的骆驼
2016/12/23
1
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的Table API及SQL Programs

序 本文主要研究一下flink的Table API及SQL Programs 实例 // for batch programs use ExecutionEnvironment instead of StreamExecutionEnvironmentStreamExecutionEnvironment env = Stre......

go4it
29分钟前
1
0
mysqldump应用

备份单个库/表数据或库/表结构 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 备份文件名 1、导出数据库为dbname的表结构(其中用戶名為root,密码为dbpasswd,生成的...

阿dai
36分钟前
1
0
shell脚本与Python的交互

1、Python针对shell获取传入,输出参数 传入:"$num" 例如: $0表示文件名,$1表示shell获取的第一个参数 输出:通过打印shell结果的方式,输出参数给Python。 例如: echo "{$iplist}",Python调...

一口今心
39分钟前
1
0
Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造

阿里妹导读:千呼万唤始出来!阿里妈妈正式公布重磅开源项目——图深度学习框架Euler。这是国内首个在核心业务大规模应用后开源的图深度学习框架。此次开源,Euler内置了大量的算法供用户直接...

阿里云官方博客
46分钟前
1
0
TiDB 3.0 Beta Release Notes

2019 年 1 月 19 日,TiDB 发布 3.0 Beta 版,对应 master branch 的 TiDB-Ansible。相比 2.1 版本,该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。 TiDB 新特性 支持 Vi...

TiDB
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部