gpt4 book ai didi

swift - 我在使用 Swift 2.0 接收用户当前位置时遇到困难

转载 作者:行者123 更新时间:2023-11-30 13:12:59 26 4
gpt4 key购买 nike

我一直在网上冲浪寻找在 Swift 2.0 中获取用户当前位置的方法,不幸的是没有一个有效。这是我一直在编写的代码,但它无法工作。我一直在使用 info.plist 文件,但不知道要添加什么?谁能告诉我我做错了什么?

import CoreLocation

class ViewController: UIViewController {

let locationManager = CLLocationManager()

override func viewDidLoad(){
super.viewDidLoad()
findMyLocation()
}



func findMyLocation() {
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.requestWhenInUseAuthorization()

locationManager.startUpdatingLocation()
}

}

extension ViewController: CLLocationManagerDelegate {

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

for location in locations {
print("THIS IS THE LATTITUDE \(location.coordinate.latitude)")
}


locationManager.stopUpdatingLocation()
}
}

最佳答案

编辑:在您的didUpdateLocations函数中不要强制stopUpdatingLocation。在您的位置最终确定显示在 map 上之前,会多次调用此函数。删除该行,您将看到控制台将打印 3-5 次您的经纬度。

获取用户位置的推荐方法是始终检查以确保您拥有该权限,如果没有,您可以提醒用户并请求该权限。

在你的 View 中DidLoad()

locationManager?.requestAlwaysAuthorization()

// .AuthorizedInUse or .AuthorizedAlways depending on your app
if CLLocationManager.authorizationStatus() == .AuthorizedInUse {
locationManager?.distanceFilter = 5.0
locationManager?.requestLocation()
}

这可以确保您在没有授权的情况下请求授权,并检查他们是否拒绝。另外,在您的 CLLocationManagerDelegate

中使用此函数
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus)
{
//Again this can be .AuthorizedAlways or .AuthorizedInUse depending
if status == .AuthorizedAlways {
locationManager?.startUpdatingLocation()
// ...
}
}

如果应用在 viewDidLoad() 之后使用您的位置服务期间更改了位置权限,那么应用可以正确响应。

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let location = locations.last
centerLocation = location

let center = CLLocationCoordinate2D(latitude: location!.coordinate.latitude, longitude: location!.coordinate.longitude)
let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.02, longitudeDelta: 0.02))
userLocationRegion = region
mainMapView.showAnnotations(mainMapView.annotations, animated: true)

self.mainMapView.setRegion(region, animated: true)
}

关于swift - 我在使用 Swift 2.0 接收用户当前位置时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38534021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com