文档章节

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(@"无法获取位置信息");
    }
}

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

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 3
码字总数 1315
作品 0
南京
Core Location in i​OS 8

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

nerozhao
2015/05/29
0
0
iOS涂色涂鸦效果、Swift仿喜马拉雅FM、抽屉转场动画、拖拽头像、标签选择器等源码

iOS精选源码 LeeTagView 标签选择控件(http://www.code4app.com/thread-31033-1-1.html) 为您的用户显示界面添加美观的加载视图(http://www.code4app.com/thread-31038-1-1.html) Swift4: 可......

sunnyaigd
09/19
0
0
(转)直接拿来用!最火的iOS开源项目(一)

AFNetworking 在众多iOS开源项目中,AFNetworking可以称得上是最受开发者欢迎的库项目。AFNetworking是一个轻量级的iOS、Mac OS X网络通信类库,现在是GitHub上第三大Objective-C库。它建立在...

孙启超
2013/06/21
0
0
iOS 8 : Location Services not working(iOS 8 定位失败)

如果是xcode6和ios 8的话,需要调用 CLLocationManager requestAlwaysAuthorization 方法,具体步骤如下: 1. @interface里: CLLocationManager *locationManager; 2. 初始化: locationMa......

孙哲
2015/04/02
0
0
iOS 获取字符串中的单个字符

iOS 获取字符串中的单个字符 要取到单个字符,就要知道字符串的编码方式,这样才能够定位每个字符在内存中的位置。但是,iOS的字符串编码是不固定的,因此,需要设置一个统一的编码格式,将所...

JustBen
2013/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Django支持中文

django是支持中文界面, 先找到Django语言包安装目录,我的在: /usr/local/python3/lib/python3.6/site-packages/django/conf/locale 有zh-Hans和zh-Hant两个文件, 其中zh-Hans是简体中文,...

MichaelShu
27分钟前
1
0
迷宫问题:顺序栈解法

采用顺序栈以及回溯法,一个比较简单的问题,但是从来没有写过,也算是弥补一下自己欠数据结构的债吧,居然也花了一个半小时,无地自容了。。 定义好数据结构求解算法就显得容易一些了。 st...

LoSingSang
34分钟前
0
0
Zookeeper 概述及应用场景

一、概述 分布式协调技术,主要用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种临界资源,防止造成"脏数据"的后果。 ZooKeeper是一个分布式的,开放源码的分布式应用...

PeakFang-BOK
41分钟前
1
0
(译)OpenGL ES2.0 – Iphone开发指引

教程截图: OpenGL ES 是可以在iphone上实现2D和3D图形编程的低级API。 如果你之前接触过 cocos2d,sparrow,corona,unity 这些框架,你会发现其实它们都是基于OpenGL上创建的。 多数程序员...

robslove
51分钟前
0
0
金九银十跳槽季,程序员面试点解析之Java专场

前言 近年来Java工程师这个岗位炙手可热,市场需求大,学习Java的人也越来越多,所以IT企业与求职者的选择都比较多,那么IT企业在面试时都会提哪些问题呢。下面为大家分享 Java高级工程师面试...

老道士
54分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部