Ios开发之定位CLLocationManager
Ios中的定位功能是通过 Core Location框架实现的。它和地图开发框架是相互独立的。在Core Location中主要实现了定位和地理编码的功能!
下面我们就来介绍一下它的属性,方法和代理方法!
属性:
desiredAccuracy:定位精度,是一个枚举类型
//kCLLocationAccuracyBest:最精确定位
//kCLLocationAccuracyNearestTenMeters:十米误差范围
//kCLLocationAccuracyHundredMeters:百米误差范围
//kCLLocationAccuracyKilometer:千米误差范围
//kCLLocationAccuracyThreeKilometers:三千米误差范围
distanceFilter: 位置信息更新最小距离,只有移动大于这个距离才更新位置信息,默认为kCLDistanceFilterNone:不进行距离限制
对象方法:
startUpdatingLocation:开始定位追踪
stopUpdatingLocation : 停止定位追踪
startUpdatingHeading:开始方向追踪
stopUpdatingHeading:停止方向追踪
startMonitoringForRegion : 开始对某个区域进行追踪
stopMonitoringForRegion : 停止对某区域进行追踪
requestAlwaysAuthorization : 请求获得应用一直使用定位服务授权,注意使用此方法前要在info.plist中配置NSLocationAlwaysUsageDescription
requestWhenInUseAuthorization : 请求获得应用使用时的定位服务授权,注意使用此方法前在要在info.plist中配置NSLocationWhenInUseUsageDescription
代理方法:
-(void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray *)locations; 位置发生改变后执行
- (void)locationManager:(CLLocationManager *)manager
didUpdateHeading:(CLHeading *)newHeading; 导航方向发生变化后执行
- (void)locationManager:(CLLocationManager *)manager
didEnterRegion:(CLRegion *)region;进入某个区域
- (void)locationManager:(CLLocationManager *)manager
didExitRegion:(CLRegion *)region;走出某个区域之后执行
开代码:
//
// ViewController.m
// location
//
// Created by jerehedu on 15/12/23.
// Copyright (c) 2015年 jerehedu. All rights reserved.
// #import "ViewController.h"
#import <CoreLocation/CoreLocation.h> @interface ViewController ()<CLLocationManagerDelegate>{
CLLocationManager *manager;
CLGeocoder *geocoder; } @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(, , , )];
label.font = [UIFont systemFontOfSize:];
[self.view addSubview:label];
if ([CLLocationManager locationServicesEnabled]) {
NSLog(@"定位服务已经打开");
}
//如果没有授权则请求用户授权
if ([CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined){
[manager requestWhenInUseAuthorization];
}else if([CLLocationManager authorizationStatus]==kCLAuthorizationStatusAuthorizedWhenInUse){
manager = [[CLLocationManager alloc]init];
[manager requestAlwaysAuthorization ];
[manager requestWhenInUseAuthorization];
manager.delegate = self;
manager.desiredAccuracy = kCLLocationAccuracyBest;//精准度
// 定位精度,枚举类型:
// kCLLocationAccuracyBest:最精确定位
// CLLocationAccuracy kCLLocationAccuracyNearestTenMeters:十米误差范围
//kCLLocationAccuracyHundredMeters:百米误差范围
//kCLLocationAccuracyKilometer:千米误差范围
//kCLLocationAccuracyThreeKilometers:三千米误差范围
manager.distanceFilter = 1.0;//移动十米定位一次
// 位置信息更新最小距离,只有移动大于这个距离才更新位置信息,默认为kCLDistanceFilterNone:不进行距离限制
[manager startUpdatingLocation];
} // Do any additional setup after loading the view, typically from a nib.
}
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
CLLocation *loctaion = [locations firstObject];
NSLog(@"%f %f",loctaion.coordinate.latitude,loctaion.coordinate.longitude );
/*[geocoder reverseGeocodeLocation:loctaion completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *placemark=[placemarks firstObject]; CLLocation *location=placemark.location;//位置
CLRegion *region=placemark.region;//区域
NSDictionary *addressDic= placemark.addressDictionary;//详细地址信息字典,包含以下部分信息
// CLPlacemark *placemark = [placemarks firstObject];
// placemark.addressDictionary
NSString *name=placemark.name;//地名
NSString *thoroughfare=placemark.thoroughfare;//街道
NSString *subThoroughfare=placemark.subThoroughfare; //街道相关信息,例如门牌等
NSString *locality=placemark.locality; // 城市
NSString *subLocality=placemark.subLocality; // 城市相关信息,例如标志性建筑
NSString *administrativeArea=placemark.administrativeArea; // 州
NSString *subAdministrativeArea=placemark.subAdministrativeArea; //其他行政区域信息
NSString *postalCode=placemark.postalCode; //邮编
NSString *ISOcountryCode=placemark.ISOcountryCode; //国家编码
NSString *country=placemark.country; //国家
NSString *inlandWater=placemark.inlandWater; //水源、湖泊
NSString *ocean=placemark.ocean; // 海洋
NSArray *areasOfInterest=placemark.areasOfInterest; //关联的或利益相关的地标
}];*/
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
出处:http://www.cnblogs.com/jerehedu/
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
技术咨询:

Ios开发之定位CLLocationManager的更多相关文章
- iOS 开发 申请定位
在iOS8以后,苹果已经强制开发者在请求定位服务时获得用户的授权,此外iOS状态栏中还有指示图标,提示用户当前应用是否正在使用定位服务.另外在iOS8以后,苹果进一步改善了定位服务,让开发者请求定位服 ...
- iOS开发系列--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...
- iOS开发——高级篇——地理定位 CoreLocation
一.CoreLocation 在移动互联网时代,移动app能解决用户的很多生活琐事,比如周边:找餐馆.找KTV.找电影院等等导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达 在上述应用 ...
- iOS开发拓展篇—CoreLocation定位服务
iOS开发拓展篇—CoreLocation定位服务 一.简单说明 1.CLLocationManager CLLocationManager的常用操作和属性 开始用户定位- (void)startUp ...
- iOS开发--地图与定位
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用 和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一 ...
- iOS开发检测是否开启定位、是否允许消息推送等权限
1.iOS开发检测是否开启定位: 需要导入: #import <CoreLocation/CoreLocation.h> 代码如下: + (void)openLocationService ...
- 转-iOS开发系列--地图与定位
来自: http://www.cnblogs.com/kenshincui/p/4125570.html#autoid-3-4-0 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功 ...
- iOS开发系列--地图与定位总结
现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的 ...
- 职业定位(移动端、ios开发、Android开发)
移动端 移动端webapp开发必备知识:http://www.chinaz.com/manage/2012/1128/283974.shtml 设计一款好的移动App,有哪些基本规则?http://w ...
随机推荐
- 5、清理mac缓存和关闭后台运行程序
一.清理mac 缓存 1.用鼠标点击桌面,然后按快捷键Command+Shift+G前往文件夹 2.输入路径:~/Library/Caches/ 3.清除所有的数据,把所有的Caches文件夹得都行 ...
- jquery_easyui 相关问题
1. datagrid点击title,无法进行客户端排序. 增加属性 data-options="singleSelect:true,collapsible:true,url:'/ViewS ...
- 第七天:JS内置对象-String字符串对象
1.String对象 String对象用于处理已有的字符串 字符串可以使用双引号或单引号 String对象有一些常用的方法和属性,例如length 示例代码: <!DOCTYPE html&g ...
- SQL Server优化器特性-隐式谓词
我们都知道,一条SQL语句提交给优化器会产生相应的执行计划然后执行输出结果,但他的执行计划是如何产生的呢?这可能是关系型数据库最复杂的部分了.这里我为大家介绍一个有关SQL Server优化器的特性- ...
- 第十八章:Android 打包部署
Andriod应用程序如果要在手机或模拟器上安装,必须要有签名! 1.签名的意义 为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序, ...
- 配置Linux自动挂载
使用mount命令来挂载硬件,在Linux重启后这些挂载信息会丢失,因此对应磁盘这类硬件,需要配置自动挂载来保证系统重启时进行自动挂载. 自动挂载信息保存在文件/etc/fstab文件中 查看该文件的 ...
- HTTP权威指南阅读笔记一:HTTP概述
HTTP协议版本: 1.HTTP/0.9:HTTP的1991原型版本称为HTTP/0.9.这个协议有很多严重的缺陷,只应该用与与老客户端的交互.HTTP/0.9只支持GET方法,不支持多媒体内容的MI ...
- [游戏模版19] Win32 物理引擎 匀速运动
>_<:Learning the physical engine >_<:resource >_<:code #include <windows.h> ...
- Coded UI Test中的数据驱动测试
有关什么是Coded UI Test以及如何使用Coded UI Test可以查看我的另一篇文章:http://www.cnblogs.com/jaxu/p/3706652.html 本文主要介绍如何 ...
- webApp 阅读器项目实践
这是一个webApp 阅读器的项目,是慕课网的老师讲授的一个实战,先给出项目源码在GitHub的地址:https://github.com/yulifromchina/MobileWebReader. ...