MapKit给错了lat& lang - iOS 8 [英] MapKit giving wrong lat & lang - iOS 8
本文介绍了MapKit给错了lat& lang - iOS 8的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我尝试在iOS 8中使用地图时,我收到以下错误。
尝试启动MapKit位置更新而不提示用于位置授权。必须首先调用 - [CLLocationManager requestWhenInUseAuthorization]或 - [CLLocationManager requestAlwaysAuthorization]。
When I try to use map in iOS 8, I get below error.
Trying to start MapKit location updates without prompting for location authorization. Must call -[CLLocationManager requestWhenInUseAuthorization] or -[CLLocationManager requestAlwaysAuthorization] first.
For this I tried solution from here, but still no luck.
Below is what I did.
Step 1. Have entry in Info.plist
NSLocationWhenInUseUsageDescription - This is test text
Step 2. Updated -(CLLocationCoordinate2D) getLocation
-(CLLocationCoordinate2D) getLocation{
CLLocationManager *locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.distanceFilter = kCLDistanceFilterNone;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// this is change
if(IS_OS_8_OR_LATER) {
[locationManager requestWhenInUseAuthorization];
}
[locationManager startUpdatingLocation];
CLLocation *location = [locationManager location];
CLLocationCoordinate2D coordinate = [location coordinate];
return coordinate;
}
Step 3. Prefix.pch
#define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
Step 4. Delete the app again with below in viewDidLoad.
CLLocationCoordinate2D theCoordinate;
theCoordinate = [self getLocation];
NSLog(@"ffffff===%f===%f", theCoordinate.latitude, theCoordinate.longitude);
Still I get output as
ffffff===0.000===0.000
Note:
I get warning, but that is just for half seconds and disappears and then I get message as
CLLocationCoordinate2D theCoordinate;
theCoordinate = [self getLocation];
NSLog(@"ffffff===%f===%f", theCoordinate.latitude, theCoordinate.longitude);
When I go in setting to check the status for Location, below is what I have.
Any idea why this is happening?
I am testing on iPad 2 iOS 8.0 & simulator iOS 8.0
解决方案
Not sure what was real problem, but putting below code in viewDidLoad
solve problem.
mapView.delegate = self;
locationManager.delegate = self;
self.locationManager = [[CLLocationManager alloc] init];
#ifdef __IPHONE_8_0
if(IS_OS_8_OR_LATER) {
// Use one or the other, not both. Depending on what you put in info.plist
[self.locationManager requestWhenInUseAuthorization];
}
#endif
[self.locationManager startUpdatingLocation];
mapView.showsUserLocation = YES;
[mapView setMapType:MKMapTypeStandard];
[mapView setZoomEnabled:YES];
[mapView setScrollEnabled:YES];
这篇关于MapKit给错了lat& lang - iOS 8的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文