使用第三方框架定位
1. 主要原因
- 因为使用CoreLocation框架进行获取用户位置信息, 是通过代理进行回调;
- 而第三方框架将"代理模拟"转换成为"block模式";
- 使用起来比较方便, 而且额外增加了超时时间等功能.
2. 框架信息
3. 使用方法
4. 注意事项
- 一般集成第三方框架到项目中, 请先确保该框架没有问题, 然后再向项目中集成
5.示例代码
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let locMgr = INTULocationManager.sharedInstance()
// MARK:- 获取一次位置信息
// delayUntilAuthorized : 计算超时时间从什么时候开始算 false : 用户还未选择的时候开始算,当超时之后,就会调用block true: 用户选择之后开始计算超时时间,如果超时了会执行block
let requestID = locMgr.requestLocationWithDesiredAccuracy(.Room, timeout: 3, delayUntilAuthorized: true) { (location : CLLocation!, _, status : INTULocationStatus) -> Void in
if status == INTULocationStatus.Success {
print("定位成功")
} else {
print("定位失败\(status.rawValue)")
}
}
// 强制完成,会调用block,相当于超时
//locMgr.forceCompleteLocationRequest(requestID)
// 取消获取用户信息,不会调用block
// locMgr.cancelLocationRequest(requestID)
// // Force the request to complete early, like a manual timeout (will execute the block)
// [[INTULocationManager sharedInstance] forceCompleteLocationRequest:requestID];
//
// // Cancel the request (won't execute the block)
// [[INTULocationManager sharedInstance] cancelLocationRequest:requestID];
// MARK:- 获取多次位置信息
// locMgr.subscribeToLocationUpdatesWithDesiredAccuracy(
// .Room) { (location : CLLocation!, _, status : INTULocationStatus) -> Void in
//
// if status == INTULocationStatus.Success {
// print("定位成功")
// } else {
// print("定位失败\(status.rawValue)")
// }
// }
}
网友评论