我在地图上显示用户位置视图:
self.mapView.showsUserLocation = YES;
系统会提示用户 AlertView,他可以选择是否允许使用当前位置。如果他按是的,一切都很好,我不担心。
但是如果他按否,我想缩放到特定区域。
那么我如何知道 MKMapView 是否允许使用当前位置呢?
我找到了解决方案,我将在其中创建自己的CLLocationManager及其委托,以查看它是否返回拒绝错误。但这感觉不太对,如果我不需要它,为什么要引入一个新的 CLLocationManger。
难道没有别的办法吗?
你不需要委托。只需使用 CLLocationManager 类方法authorizationStatus
:
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized) {
// allowed
} else {
// not allowed
}
可能的值为:
typedef enum {
kCLAuthorizationStatusNotDetermined = 0,
kCLAuthorizationStatusRestricted,
kCLAuthorizationStatusDenied,
kCLAuthorizationStatusAuthorized
} CLAuthorizationStatus;