使用用户位置时出错

Posted

技术标签:

【中文标题】使用用户位置时出错【英文标题】:Error on using User location 【发布时间】:2018-06-22 23:39:15 【问题描述】:

为什么我不能使用用户位置?我已经在Info.plist 上添加了密钥,但是当我运行该应用程序时,我没有收到消息。可能会发生什么?

我在我的iPhone上测试过,我只是发布模拟器图像给你们看看我得到了什么。

【问题讨论】:

您需要编写代码来获取用户当前位置,在第一次它会请求许可并显示来自 info.plist 的消息,上述努力不会显示您想要的弹出窗口。 您好!问题是应用程序没有请求许可 请阅读我的评论,在请求许可后您需要正确的代码。您发布的代码不会显示任何警报,因为它仅用于警报消息,而不是获取用户的位置。 【参考方案1】:

将此添加到 info.plist 文件中

<key>NSLocationAlwaysUsageDescription</key>
<string>Application needs permission to access your current location.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Application needs permission to access your current location.</string>

并使用以下代码获取您的位置

class MapViewController: UIViewController, CLLocationManagerDelegate

var locationManager = CLLocationManager()
var currentLocation: CLLocation?

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.



    locationManager.delegate = self
    locationManager.requestWhenInUseAuthorization()

    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
    locationManager.distanceFilter = 10
    locationManager.startUpdatingLocation()
    locationManager.allowsBackgroundLocationUpdates = true
    locationManager.startUpdatingHeading()


// Handle incoming location events.
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
    let location: CLLocation = locations.last!
    print("Location: \(location)")



// Handle authorization for the location manager.
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) 
    switch status 
    case .restricted:
        print("Location access was restricted.")
    case .denied:
        print("User denied access to location.")
    case .notDetermined:
        print("Location status not determined.")
    case .authorizedAlways: fallthrough
    case .authorizedWhenInUse:
        print("Location status is OK.")

    


// Handle location manager errors.
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) 
    locationManager.stopUpdatingLocation()
    print("Error: \(error)")


【讨论】:

不幸的是,仍然无法正常工作。当我运行应用程序时,位置消息没有出现。

以上是关于使用用户位置时出错的主要内容,如果未能解决你的问题,请参考以下文章

核心数据错误代码=134030“保存时出错”,没有用户信息

尝试更新位置时出错

Google 地图应用程序 - 运行应用程序时出错

使用 fusedLocationProvider.removeLocationUpdates (locationCallback) Android Studio 时出错

使用 ref 获取组件位置时出错(ReactCannot 读取属性 'getBoundingClientRect' of null")

使用 .between() 检查从字典中拉出的长/纬度位置时出错