001.Swift定位 CLLocationManager

引用:  import CoreLocation

// 如果是ios8.0以后, 在想请求用户的位置信息, 需要主动的请求授权, 系统不会再自动弹出一个窗口

lazy var locationM: CLLocationManager = {

let locationM = CLLocationManager()

locationM.delegate = self

// 请求的是前台定位授权

// 默认情况, 只能在前台获取用户位置信息 如果想想要在后台也获取用户位 那么必须勾选后台模式location  updates

// 效果 在后台确实可以获取到位置信息, 但是屏幕上方会出现一个蓝色的横幅, 不断提醒用户, 当前APP 正在使用你的位置

if #available(iOS 8.0, *) {

locationM.requestWhenInUseAuthorization()

// 如果在ios9.0以后, 想要在后台获取用户位置,

// 如果当前的授权状态是前台定位授权, 那么你需要勾选后台模式 location updates, 还要额外的设置以下属性为true

// 注意: 如果设置这个属性为true, 那么必须勾选后台模式

if #available(iOS 9.0, *) {

locationM.allowsBackgroundLocationUpdates = true

}

// 前后台定位授权

// 如果当前的授权状态是前后台定位授权, 那么默认情况下, 就可以在后台获取用户位置信息, 不需要勾选后台模式location updates

//            locationM.requestAlwaysAuthorization()

}

// 设置过滤距离

// 每隔100米定位一次

// 1 111KM/100M

// 如果最新的位置距离上一次的位置之间的物理距离, 大于这个值, 就会通过代理来告诉我们最新的位置数据

locationM.distanceFilter = 100

// 定位精确度

//         kCLLocationAccuracyBestForNavigation // 最适合导航

//         kCLLocationAccuracyBest; // 最好的

//         kCLLocationAccuracyNearestTenMeters; // 附近10米

//         kCLLocationAccuracyHundredMeters; // 附近100米

//         kCLLocationAccuracyKilometer; // 附近1000米

//         kCLLocationAccuracyThreeKilometers; // 附近3000米

// 经验: 如果定位的精确度越高, 那么越耗电, 而且定位时间越长

//

locationM.desiredAccuracy = kCLLocationAccuracyBest

return locationM

}()

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {

locationM.startUpdatingLocation()

}

}

extension ViewController: CLLocationManagerDelegate {

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

print("已经获取到位置信息")

// 获取用户当前所在的城市, 切换到奥对应城市 1

// 如果想要定位一次, 那么可以在定位到之后, 停止定位

//        locationM.stopUpdatingLocation()

}

/**

授权状态发生改变时调用

- parameter manager: 位置管理者

- parameter status:  状态

*/

func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {

switch status {

case .NotDetermined:

print("用户没有决定")

case .Restricted:

print("受限制")

case .AuthorizedWhenInUse:

print("前台定位授权")

case .AuthorizedAlways:

print("前后台定位授权")

case .Denied:

//            print("拒绝")

// 判断当前设备是否支持定位, 并且定位服务是否开启

if CLLocationManager.locationServicesEnabled() {

print("真正被拒绝")

// 手动通过代码, 来跳转到设置界面

if #available(iOS 8.0, *) {

let url = NSURL(string: UIApplicationOpenSettingsURLString)

if UIApplication.sharedApplication().canOpenURL(url!) {

UIApplication.sharedApplication().openURL(url!)

}

}

}else {

// 当我们在app内部想要访问用户位置, 但是当前的定位服务是关闭状态, 那么系统会自动弹出一个窗口, 快捷跳转到设置界面, 让用户设置

print("定位服务应该打开")

}

default:

print("none")

}

}

时间: 09-08

001.Swift定位 CLLocationManager的相关文章

地图与定位

地图与定位 标签(空格分隔): UI补充 地图与定位 在移动互联网时代我们可以去依靠手机上的地图导航区陌生的地方,也可用利用团购的app搜索最近的找餐馆.找酒店.找银行.找电影院--. - LBS :Location Based Service - SoLoMo :Social Local Mobile(索罗门) 上面的功能都都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 - Map Kit :用于地图展示 - Core Location :用于地理定位 C

Core Location :?用于地理定位

Core Location :?用于地理定位 在移动互联?网时代,移动app能解决?用户的很多?生活琐事,?比如 导航:去任意陌?生的地?方 周边:找餐馆.找酒店.找银?行.找电影院 在上述应?用中,都?用到了地图和定位功能,在iOS开发中,要想加?入这2?大功 能,必须基于2个框架进?行开发 Map Kit :?用于地图展?示 Core Location :?用于地理定位 2个热门专业术语 LBS :Location Based Service SoLoMo :Social Local Mob

系统地图的用法

1,  引用框架  CoreGraphics.framework     MapKit.framework  CoreLocation.framework 2 导入主头文件 iOS5之后不需要手动导入 #import <CoreLocation/CoreLocation.h> #import <MapKit/MapKit.h> (1)MapKit :用于地图展示 (2)CoreLocation :用于地理定位 CoreLocation框架使用须知 (1)  Corelocation

UI进阶 地图

一.地图的简介 在移动互联网时代,移动app能解决用户的很多生活琐事,比如    导航:去任意陌生的地方    周边:找餐馆.找酒店.找银行.找电影院    手机软件:微信摇一摇.QQ附近的人.微博.支付宝等 在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这两大功能,必须基于两个框架进行开发    Map Kit :用于地图展示    Core Location :用于地理定位 二.地图定位 CoreLocation框架的使用: 导入头文件        #import <Cor

Slient SMS 精确基站定位系统笔记

https://cn0xroot.com/tag/osmocombb/ OsmocomBB – 雪碧 0xroot 通信?? 硬件??的|GNURadio |SDR |... http://www.freebuf.com/news/topnews/87353.html 永不消逝的电波(四):从无线电角度揭秘定位劫持 http://www.freebuf.com/vuls/103676.html 如何黑掉 Telegram 以及 WhatsApp? 其实,Silent SMS在各国执法部门都大量使

CoreLocation

导入框架(Xcode5.0之后可以省略) 导入主头文件 #import <CoreLocation/CoreLocation.h> CoreLocation框架使用须知CoreLocation框架中所有数据类型的前缀都是CLCoreLocation中使用CLLocationManager对象来做用户定位 CLLocationManager的常用操作 为了严谨起见,最好在使用定位功能之前判断当前应用的定位功能是否可用CLLocationManager有个类方法可以判断当前应用的定位功能是否可用 

swift中判断设备是否打开定位

在基于LBS的项目中很多都会判断是否打开了定位功能.从而做提醒用户打开或者提醒到哪里打开等操作...在OC时候我们这么写: //检测是否开启定位 if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized || [CLLocationManager authorizationStatus] ==

在iOS8下使用CLLocationManager定位服务需要系统授权

最近在ios8.0使用CLLocationManager定位服务,发现老不能定位,查看设置菜单中的项也是处于未知状态.想起之前都有一个弹出框提示用户是否允许定位,这次一直没有出现了.原来ios8.0下的定位服务需要申请授权了. 具体代码如下: 1 if ([CLLocationManager locationServicesEnabled]) { 2 3 self.locationManager = [[CLLocationManager alloc] init]; 4 5 _locationM

android studio--百度定位集成001

安卓现在的大趋势已经是普遍使用androidstudio(安装包[https://yunpan.cn/ckc54idj3JVJb  访问密码 664f])了.这个是集成的一个好的环境. 今天来搞个百度定位集成. 首先看下百度定位sdk. 看到这个4步骤,其实我们就按照这个来吧. 第一步:申请密钥 这里需要看的是: 有人不知道sha1是啥? 就是ecplise 开发安卓项目时候的创建的证书翻看的. 查看请参考:http://blog.csdn.net/forlong401/article/deta