我正在尝试在iOS 8上使用MapKit并且我不断收到错误:
Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.
在这里查找,我发现我必须在我的plist中实现NSLocationWhenInUsageDescription,并且还调用了locationManager.requestWhenInUseAuthorization()但没有任何反应,我仍然在控制台中得到该错误.我究竟做错了什么?
解决方法
在我的应用程序委托中,我为类外的locationManager创建了一个可选的var,然后进行设置
locManager = CLLocationManager() locManager!.requestWhenInUseAuthorization()
这会导致警报视图弹出NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription,如果您适当地更改它.
然后在视图控制器文件中,我在类外部创建了另一个var来保存本地CLLocationManager.我接着说
if locManager { locMan = locManager! locMan!.delegate = self }
然后您可以使用委托方法
func locationManager(_manager: CLLocationManager!,didChangeAuthorizationStatus status: CLAuthorizationStatus)
当授权状态改变时调用它,当用户响应弹出窗口时它会调用.在此内部,您可以使用这段代码将用户位置放在地图上
if status == CLAuthorizationStatus.AuthorizedWhenInUse { map.showsUserLocation = true }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。