swift开发笔记18 - 获取当前位置坐标和地址
2015-12-02 16:01
381 查看
首先在info.plist里增加两行:NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription,如下图中倒数3和4行
然后
import CoreLocation
给类增加代理:
CLLocationManagerDelegate
增加类属性:
//用于定位服务管理类,它能够给我们提供位置信息和高度信息,也可以监控设备进入或离开某个区域,还可以获得设备的运行方向
var locationManager :
CLLocationManager!
var currLocation :
CLLocation!
主要代码,总共三个函数:
判断手机系统版本:
func ios8() -> Bool {
var versionCode:String = UIDevice.currentDevice().systemVersion
let version = NSString(string: versionCode).doubleValue
return version >= 8.0
}
然后
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
}
相关文章推荐
- Apple Swift学习教程
- 百度地图经纬度转换到腾讯地图/Google 对应的经纬度
- PHP根据两点间的经纬度计算距离
- C#通过经纬度计算2个点之间距离的实现代码
- MYSQL 关于两个经纬度之间的距离由近及远排序
- python根据经纬度计算距离示例
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift编程中的泛型解析
- Swift中定义二维数组的方法及遍历方法示例
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- Java编程获取经纬度之间距离的方法
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- IOS开发笔记整理49之详解定位CLLocation
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法
- Swift心得笔记之运算符