在需要使用到需要获取用户当前位置时,获取用户定位授权需要使用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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注