IOS 8 Map无法正常工作:尝试在不提示位置授权的情况下启动MapKit位置更新

时间:2014-10-15 06:23:49

标签: ios mapkit

我正在使用Xcode 6.当我尝试使用CLLocationManager获取用户当前位置时,我遇到了一些问题。甚至我将NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription添加到Info.plist文件中。并且还使用了[CLLocationManager requestWhenInUseAuthorization]。然后我也得到控制台输出

  

2014-10-15 11:45:15.004 MapIOS8 [1916:57908]尝试在不提示位置授权的情况下启动MapKit位置更新。必须首先调用 - [CLLocationManager requestWhenInUseAuthorization]或 - [CLLocationManager requestAlwaysAuthorization]。

2 个答案:

答案 0 :(得分:0)

您是否尝试按此顺序编写代码?

CLLocationManager *YourLocationManager = [[CLLocationManager alloc] init];
YourLocationManager.delegate = self;
[YourLocationManager requestWhenInUseAuthorization];
[YourLocationManager startUpdatingLocation];

yourMapView.delegate = self;
yourMapView.showsUserLocation = YES;

此外,要获取用户位置坐标,您可能必须实现此mapkit委托方法

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    NSLog(@"%f, %f", userLocation.coordinate.latitude, userLocation.coordinate.longitude);

    [mapView selectAnnotation:userLocation animated:YES];
}

答案 1 :(得分:0)

如果您使用的是iOS模拟器,请尝试从“设置” - >重置位置设置。常规 - >与隐私>重置位置&隐私。然后致电:

[LocationManager requestAlwaysAuthorization];

首次执行时必须出现一个弹出窗口,以允许使用当前用户的位置。允许使用当前位置后启动LocationManager:

[LocationManager startUpdatingLocation];