尝试获取当前位置时swift用户的位置问题

时间:2014-07-28 08:43:18

标签: ios swift cllocationmanager

我正在使用当前用户位置及其朋友的日程安排。 我写了一些代码,用来显示你的位置

    var loc :CLLocationCoordinate2D = self.mapView.userLocation.coordinate
    var region = MKCoordinateRegionMakeWithDistance(loc, 5, 5)
    self.mapView.setRegion(region, animated: true)

此外我收到的错误是:

        Trying to start MapKit location updates without prompting for location               authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.

经过一些研究后,我不明白我应该做些什么来改善我的位置[我改变了调试 - > simulateLocation但没有改变]

请您解释一下我要记住的内容以及我需要做些什么来改进我的应用程序?

[edit1]模拟器是否有可能以这种方式运行,手机的行为方式可能不一样?

2 个答案:

答案 0 :(得分:1)

从iOS 8开始,您必须明确要求用户许可:

    var systemVersion = NSOperatingSystemVersion(majorVersion: 8, minorVersion: 0, patchVersion: 0)
        if NSProcessInfo.processInfo().isOperatingSystemAtLeastVersion(systemVersion) {
        locationManager.requestAlwaysAuthorization()
    }

    // get current location
    if CLLocationManager.authorizationStatus() == CLAuthorizationStatus.Authorized {
        locationManager.startUpdatingLocation()
    }

此外,您必须在Info.plist中明确声明权限问题

NSLocationAlwaysUsageDescription

答案 1 :(得分:0)

我通过google-it来解决这个问题:

http://rshankar.com/get-your-current-address-in-swift/

其中一个步骤是设置 - >一般 - > ...使用位置 - >总是,这是为了解决它而被禁止,你不会得到那个错误。

此外,制作教程的人提到你应该输入一个位置,以确保它有效并且VOILA!