本文介绍: 在需要使用到需要获取用户当前位置时,获取用户定位授权需要使用CoreLocation框架提供的CLLocationManager类。在使用该类时,需要设置该类的delegate属性,将该类的实例作为delegate。并在viewDidLoad()中,创建CLLocationManager类的实例,这里使用的是获取当前3km的位置,定位精准度可以视情况改kCLLocationAccuracyKilometer,kCLLocationAccuracyNearestTenMeters等。
在需要使用到需要获取用户当前位置时,获取用户定位授权需要使用CoreLocation框架提供的CLLocationManager类。在使用该类时,需要设置该类的delegate属性,将该类的实例作为delegate。然后实现CLLocationManagerDelegate协议中的方法,以获取用户定位授权状态和位置信息。
import CoreLocation
先在ViewController后面加上这个定位协议CLLocationManagerDelegate
ViewController: CLLocationManagerDelegate
并在viewDidLoad()中,创建CLLocationManager类的实例,这里使用的是获取当前3km的位置,定位精准度可以视情况改kCLLocationAccuracyKilometer,kCLLocationAccuracyNearestTenMeters等
let locationManage = CLLocationManager()//位置管理器
override func viewDidLoad() {
super.viewDidLoad()
locationManage.requestWhenInUseAuthorization()//请求授权获取当前用户位置
locationManage.delegate = self
locationManage.desiredAccuracy = kCLLocationAccuracyThreeKilometers
locationManage.requestLocation()//请求到当前位置后能够获取当前位置的所有weather信息,即weather()里的数据全都获取完毕
}
其次要注意在info.plist文件中添加NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription键,并为其设置用户授权提示信息。
//成功获取到当前位置信息
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let lon = locations[0].coordinate.longitude //经度
let lat = locations[0].coordinate.latitude //纬度
//处理获取到的定位数据
}
//请求到用户位置失败时调用--系统调用
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error)
locationLabel.text = "获取位置失败,请检查网络"
}
原文地址:https://blog.csdn.net/seanneil/article/details/129871464
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_30970.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。