位置在iPad和iPod中显示为0.0

时间:2015-08-04 10:34:14

标签: ios objective-c iphone core-location ipod-touch

您好,在iPhone,iPod以及iPhone上获取该位置的最佳方式是什么。

我已经整合了以下内容,但我仍然无法获得正确的当前位置。 在iPod上我只是第一次获得该位置:

+ (GPS*)get 
{
    if (!g_) 
    {
        NSLog(@"Creating instance of GPS!");
        g_ = [GPS new];
    }
    return g_;
}

@synthesize manager;

- (id)init
{
    if (!(self = [super init]))
        return nil;

    //Setup the manager
    manager = [[CLLocationManager alloc] init];
    if (!manager) 
    {
        return nil;
    }
    manager.distanceFilter = kCLDistanceFilterNone;
    manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
    manager.desiredAccuracy = kCLLocationAccuracyBest;
    manager.delegate = self;

    if ([manager respondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) 
    {
        manager.pausesLocationUpdatesAutomatically = NO;
    }
    if ([manager respondsToSelector:@selector(requestAlwaysAuthorization)])
    {
        [manager requestAlwaysAuthorization];
    }

    [manager startUpdatingLocation];

    return self;
}

- (void)start
{
    NSLog(@"Start Tracking");

    [manager startUpdatingLocation];
 }

-(void)stop
{
    [manager stopUpdatingLocation];
}

#pragma mark CLLocationManagerDelegate

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{
    CLLocation *currentLocation = [locations lastObject];
    NSLog(@"%f : %f", currentLocation.coordinate.latitude, currentLocation.coordinate.longitude);
    //[self writeToFile];
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
    NSLog(@"locationManager - didFailWithError: %@", [error localizedDescription]);
    NSLog(@"domain:%@", [error domain]);
    //NSLog(@"code:%i", [error code]);
    //[self writeToFile];
}

1 个答案:

答案 0 :(得分:0)

iOS8上存在位置授权问题。根据您最近的评论,您使用的是iOS 8.4,这可能是您的问题。请在startUpdatingLocation之前尝试以下代码:

// This part was added due to a location authorization issue on iOS8
// See more at: http://nevan.net/2014/09/core-location-manager-changes-in-ios-8/
if ([manager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
    [manager requestWhenInUseAuthorization];
}
self.mapView.showsUserLocation = YES; //?

在此之前,请确保通过向其中添加以下一个或两个密钥来正确设置 Info.plist

  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescription