ios---CoreLocation框架实现定位功能
CoreLocation框架实现定位功能(iOS8.0之后)
//
// ViewController.m
// 定位
//
// Created by admin on 2017/9/20.
// Copyright © 2017年 admin. All rights reserved.
//
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
@property(nonatomic,strong)CLLocationManager *locationManager;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self startLocation];
}
-(void)startLocation
{
//判断用户是否打开了定位功能
if([CLLocationManager locationServicesEnabled]){
if(!_locationManager){
_locationManager=[[CLLocationManager alloc]init];
//设置代理
[self.locationManager setDelegate:self];
//设置定位精确度,精确度越高,越耗电
[self.locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
//设置多远距离定位一次
[self.locationManager setDistanceFilter:100];
//开始获取授权,打开定位
[self.locationManager requestWhenInUseAuthorization];
//开始定位
[self.locationManager startUpdatingLocation];
}else{
[self.locationManager startUpdatingLocation];
}
}else{
NSLog(@"%d",666);
}
}
#pragma mark -CLLocationManagerDelegate
//代理方法监听定位服务状态的变化
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
switch (status) {
case kCLAuthorizationStatusNotDetermined:
if([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){
[_locationManager requestAlwaysAuthorization];
NSLog(@"用户还未决定授权");
}
break;
case kCLAuthorizationStatusAuthorizedWhenInUse:
if([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){
[_locationManager requestAlwaysAuthorization];
NSLog(@"定位服务授权状态被允许在使用应用程序的时候");
}
break;
case kCLAuthorizationStatusRestricted:
{
NSLog(@"访问受限");
break;
}
case kCLAuthorizationStatusAuthorizedAlways:
if([_locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]){
[_locationManager requestAlwaysAuthorization];
NSLog(@"定位服务授权状态已经被用户允许在任何状态下获取位置信息。包括监测区域、访问区域、或者在有显著的位置变化的时候");
}
break;
case kCLAuthorizationStatusDenied:
NSLog(@"被拒绝了");
break;
default:
break;
}
}
//代理方法返回locationd 信息
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
NSLog(@"%@",locations);
CLLocation *currLocation=locations.lastObject;
NSTimeInterval locatinAge=-[currLocation.timestamp timeIntervalSinceNow];
NSLog(@"%f----%f",[currLocation.timestamp timeIntervalSince1970],locatinAge);
//关闭定位
[self.locationManager stopUpdatingLocation];
CLLocation *location=locations.lastObject;
[self reverseGeocoder:location];
}
//地理反编码
-(void)reverseGeocoder:(CLLocation *)currentLocation{
CLGeocoder *geocoder=[[CLGeocoder alloc]init];
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
if(error || placemarks.count==0){
NSLog(@"反编码失败");
}else{
CLPlacemark *placemark=placemarks.firstObject;
NSLog(@"placemark:%@",[placemark addressDictionary]);
NSString *city=[[placemark addressDictionary]objectForKey:@"City"];
NSLog(@"%@",city);
}
}];
}
@end
github:https://github.com/Frankltf/ios-CoreLocation/tree/features-one
ios---CoreLocation框架实现定位功能的更多相关文章
- IOS CoreLocation框架的使用(用于地理定位)
● 在移动互联网时代,移动app能解决用户的很多生活琐事,比如 ● 导航:去任意陌生的地方 ● 周边:找餐馆.找酒店.找银行.找电影院 ● 在上述应用中,都用到了地图和定位功能,在iOS开发中 ...
- ios - 自动布局框架编写(更多功能完善中)
之前用的storyboard以及xib挺多的,最近看到朋友用第三方框架---自动布局约束框架在添加控件约束的时候老实报错.后来自己就试了试纯代码创建以及约束控件.但是纯代码约束一个控件还可以,如果约束 ...
- Flex AIR应用GPS定位功能(Android和IOS)
说明: 使用AIR进行GPS定位功能实现时,会经常判断GPS是否打开.一般的官方或者书上的介绍的方法,测试后,只能对Android系统进行判断,而对ios系统则无法进行判断. 经过研究测试,终于解决实 ...
- CoreLocation框架的使用
CoreLocation框架使用 一.地图和定位的简介 1.应用场景 周边:找餐馆/找KTV/找电影院(团购APP) 导航:根据用户设定的起点和终点,进行路线规划,并指引用户如何到达(地图APP) 2 ...
- iOS常用框架源码分析
SDWebImage NSCache 类似可变字典,线程安全,使用可变字典自定义实现缓存时需要考虑加锁和释放锁 在内存不足时NSCache会自动释放存储的对象,不需要手动干预 NSCache的key不 ...
- 【iOS】7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- 【iOS】7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- 【iOS】7.4 定位服务->2.1.3.3 定位 - 官方框架CoreLocation 功能3:区域监听
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正. 本文相关目录: ================== 所属文集:[iOS]07 设备工具 === ...
- iOS定位--CoreLocation框架
CoreLocation框架的使用 // 首先导入头文件 #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是C ...
随机推荐
- STM32的RTC晶振不起振的原因及解决方法
STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了.很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了” 更有阴谋 ...
- HMaster/HRegion Server 工作原理
1.HBase系统架构 2. HRegion Sever架构图 0.94之前的版本 0.96+的版本 WAL: 即Write Ahead Log, 是HDFS上一个文件,早期版本中称为 ...
- JVM内存结构探秘及编码实战
了解JVM内存结构的目的 在Java的开发过程中,因为有JVM自动内存管理机制,不再需要像在C.C++开发那样手动释放对象的内存空间,不容易出现内存泄漏和内存溢出的问题.但是,正是由于把内存管理的权利 ...
- jquery中获取当前选中行数据的方法
$("table tr").click(function() { var td = $(this).find("td");// 找到td元素 var lo_id ...
- 从零开始のcocos2dx生活(十一)TableView
目录 简述 主要变量 主要方法 setVerticalFillOrder reloadData cellAtIndex updateCellAtIndex insertCellAtIndex remo ...
- 从0开发3D引擎(三):搭建开发环境
本系列使用Reason语言,因此需要搭建它的开发环境. 上一篇博文 从0开发3D引擎(二):准备预备知识 搭建开发环境 建议使用VSCode编辑器来开发Reason,因为它的插件支持得最好. 具体搭建 ...
- 洛谷P3292 [SCOI2016]幸运数字 线性基+倍增
P3292 [SCOI2016]幸运数字 传送门 题目描述 A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念碑的形式矗立在 ...
- Eclipse中安装Jetty服务器
1. 在eclipse中安装jetty适配器 方法一: (1) 打开 Windows -> Preference -> Server -> Runtime Environment , ...
- OpenLayers4 隐藏(hide)Feature
需求: 需要将同一图层的要素进行分类显示和隐藏(类似于图层控制) 方法: 使用setStyle方法将Feature的样式设置为null. 环境: win10.google chrome.OL 4.3 ...
- Golang最强大的访问控制框架casbin全解析
Golang最强大的访问控制框架casbin全解析 Casbin是一个强大的.高效的开源访问控制框架,其权限管理机制支持多种访问控制模型.目前这个框架的生态已经发展的越来越好了.提供了各种语言的类库, ...