swift开发笔记18 - 获取当前位置坐标和地址
发布时间:2020-12-14 01:35:36 所属栏目:百科 来源:网络整理
导读:首先在info.plist里增加两行:NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription,如下图中倒数3和4行 然后 import CoreLocation 给类增加代理: CLLocationManagerDelegate 增加类属性: // 用于定位服务管理类,它能够给我们提供位
首先在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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |