首先在info.plist里增加两行:NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription,如下图中倒数3和4行
然后
import CoreLocation
给类增加代理:
CLLocationManagerDelegate
//用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向
var locationManager : CLLocationManager!
var currLocation : CLLocation!
主要代码,总共三个函数:
var locationManager : CLLocationManager! var currLocation : CLLocation! override func viewDidLoad() { //初始化位置管理器 locationManager = CLLocationManager() locationManager.delegate = self //设备使用电池供电时最高的精度 locationManager.desiredAccuracy = kCLLocationAccuracyBest //精确到1000米,距离过滤器,定义了设备移动后获得位置信息的最小距离 locationManager.distanceFilter = kCLLocationAccuracyKilometer if ios8() { //如果是IOS8及以上版本需调用这个方法 locationManager.requestAlwaysAuthorization() //使用应用程序期间允许访问位置数据 locationManager.requestWhenInUseAuthorization(); //启动定位 locationManager.startUpdatingLocation() } } //FIXME: CoreLocationManagerDelegate 中获取到位置信息的处理函数 func locationManager(manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) { let location:CLLocation = locations[locations.count-1] as CLLocation currLocation=location if (location.horizontalAccuracy > 0) { self.locationManager.stopUpdatingLocation() print("wgs84坐标系 纬度: \(location.coordinate.latitude) 经度: \(location.coordinate.longitude)") self.locationManager.stopUpdatingLocation() print("结束定位") } //使用坐标,获取地址 let geocoder = CLGeocoder() var p:CLPlacemark? geocoder.reverseGeocodeLocation(currLocation,completionHandler: { (placemarks,error) -> Void in if error != nil { print("获取地址失败: \(error!.localizedDescription)") return } let pm = placemarks! as [CLPlacemark] if (pm.count > 0){ p = placemarks![0] as CLPlacemark print("地址:\(p?.name!)") }else{ print("没地址!") } }) } //FIXME: 获取位置信息失败 func locationManager(manager: CLLocationManager,didFailWithError error: NSError) { print(error) }
判断手机系统版本:
func ios8() -> Bool { var versionCode:String = UIDevice.currentDevice().systemVersion let version = Nsstring(string: versionCode).doubleValue return version >= 8.0 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。