iOS 8 Map Kit Obj-C Cannot Get Users Location

前端 未结 8 659
[愿得一人]
[愿得一人] 2020-11-27 11:45

I am working with Map Kit in iOS 8 using Obj-C NOT SWIFT. I cannot get the device location it is set a 0.00, 0.00 and I am getting the error:

Trying to start         


        
相关标签:
8条回答
  • To extend the accepted answer and if you create a sample project with just the above functionality, then apart from CoreLocation and Mapkit frameworks, you might need to add UIKit, Foundation and CoreGraphics framework manually as well in Xcode 6.

    0 讨论(0)
  • 2020-11-27 12:18

    Actually, I am studying the CS193P Lecture 16, which is about location and map view, and I could not make the location manager work in iOS 8, applying what was in the video. Looking at your answer, I could make it work.

    The Info.plist was modified as described in the answers (I use the NSLocationWhenInUseUsageDescription).

    In AddPhotoViewController.hn the define was added :

    #define IS_OS_8_OR_LATER ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    

    In AddPhotoViewController.m, the following code was added in ViewDidLoad (after self.image):

    #ifdef __IPHONE_8_0
    if(IS_OS_8_OR_LATER)
    {
        [self.locationManager requestWhenInUseAuthorization];
    }
    #endif
    

    The authorization will be asked only once, the first time you launch the application.

    The following was also added to AddPhotoViewController.h because it was not said in Lecture 16 :

    @property (nonatomic) NSInteger locationErrorCode;
    

    shouldPerformSegueWithIdentifier was modified to include else if (!self.location) :

    else if (![self.titleTextField.text length])
            {
                [self alert:@"Title required"];
                return NO;
            }
            else if (!self.location)
            {
                switch (self.locationErrorCode)
                {
                    case kCLErrorLocationUnknown:
                        [self alert:@"Couldn't figure out where this photo was taken (yet)."]; break;
                    case kCLErrorDenied:
                        [self alert:@"Location Services disabled under Privacy in Settings application."]; break;
                    case kCLErrorNetwork:
                        [self alert:@"Can't figure out where this photo is being taken.  Verify your connection to the network."]; break;
                    default:
                        [self alert:@"Cant figure out where this photo is being taken, sorry."]; break;
                }
                return NO;
            }
            else
            { // should check imageURL too to be sure we could write the file
                return YES;
            }
    

    didFailWithError was added :

    - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
    {
        self.locationErrorCode = error.code;
    }
    
    0 讨论(0)
提交回复
热议问题