• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

CoreLocation进行定位(Swift版)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

参考demo:http://download.csdn.net/download/klkxxy/10049133





1.在使用定位时需要配置plist文件,否则可能发生错误,在文件中新增以下属性用于用户在使用该应用是授权定位,但是该设置也可以调用CLLocatoinManager的方法实现

NSLocationWhenInUseUsageDescription//打开应用是开启定位


NSLocationAlwaysUsageDescription//一直开启定位



2.除了需要配置plist文件(有时没有导入也可以定位),还需要导入CoreLocation的framework如下图:


3.在使用的swift文件的开始导入头文件->" import CoreLocation"

4.在进行实际开发时,获取定位,可以使用NSlock,运行时不受打扰。

5.扩展

CLLocation类:主要存储定位后的信息( coordinate.longitude:经度  coordinate.latitude:纬度  altitude:高度

6.扩展学习参考:使用swift构建带有地理定位功能的APP

7.如果定位失败原因

请检查a.调试定位功能没有开启。解决:模拟器的Debug->Location是否打开(即不选None)   

 b.应用地理位置访问权限不够。 解决:初次使用应用先回到模拟器首页(Shift+COM+H),进入设置->privacy->Location Services->下面的应用列表的该应用是否选择Always.

c.还有可能是自定义经纬度不符合(error:kCLErrorDomain的错误,当然得调用协议中的定位失败返回错误方法)

三.使用主要步骤

1.配置好相关,导入头文件,控制器遵守CLLocationManagerDelegate委任代理

2.生成CLLocationMananger的对象

3.设置CLLocation属性和某些方法的调用

4.实现CLLocationDelegate的方法回掉,didUpdateLocations获取定位信息或者错误信息

四.代码参考

[objc] view plain copy
  1. import UIKit  
  2. import CoreLocation  
  3.   
  4. class ViewController: UIViewController ,CLLocationManagerDelegate{  
  5.   
  6.     let locationManager = CLLocationManager()  
  7.     var currentLocation:CLLocation!  
  8.     var lock = NSLock()  
  9.   
  10.     override func viewDidLoad() {  
  11.         super.viewDidLoad()  
  12.         locationManager.delegate = self  
  13.         locationManager.desiredAccuracy = kCLLocationAccuracyBest //定位精确度(最高)一般有电源接入,比较耗电  
  14.         //kCLLocationAccuracyNearestTenMeters;//精确到10米  
  15.         locationManager.distanceFilter = 50 //设备移动后获得定位的最小距离(适合用来采集运动的定位)  
  16.         locationManager.requestWhenInUseAuthorization()//弹出用户授权对话框,使用程序期间授权(ios8后)  
  17.         //requestAlwaysAuthorization;//始终授权  
  18.         locationManager.startUpdatingLocation()  
  19.         print("开始定位》》》")  
  20.   
  21.     }  
  22.   
  23.     override func didReceiveMemoryWarning() {  
  24.         super.didReceiveMemoryWarning()  
  25.         // Dispose of any resources that can be recreated.  
  26.     }  
  27.   
  28.     /** 
  29.      *  CLlocationDelegate 
  30.      */  
  31.     //委托传回定位,获取最后一个  
  32.     func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {  
  33.         lock.lock()  
  34.         currentLocation = locations.last    //注意:获取集合中最后一个位置  
  35.         print("定位经纬度为:\(currentLocation.coordinate.latitude)")  
  36.         //一直发生定位错误输出结果为0:原因是我输出的是currentLocation.altitude(表示高度的)而不是currentLoction.coordinate.latitude(这个才是纬度)  
  37.         print(currentLocation.coordinate.longitude)  
  38.         lock.unlock()  
  39.   
  40.     }  
  41.     func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {  
  42.         print("定位出错拉!!\(error)")  
  43.     }  
  44.   
  45. }  




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SCLAlertView-Swift发布时间:2022-07-13
下一篇:
Swift学习初步(一)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap