StopUpdatingLocation вызывается, но стрелка GPS не исчезает

Я не понимаю, почему серая стрелка GPS не исчезает после вызова stopUpdatingLocation. Вот мой код:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view from its nib.
    if (self.locationManager == nil)
    {
    self.locationManager = [[[CLLocationManager alloc] init]autorelease];
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    self.locationManager.delegate = self;
    }
    CLLocation *location = [self.locationManager location];
    CLLocationCoordinate2D coordinate = [location coordinate];

    g_lat = coordinate.latitude;
    g_lng = coordinate.longitude;


    [self.locationManager startUpdatingLocation];
    }

И вот мой didUpdateLocation:

- (void) locationManager:(CLLocationManager *)manager didUpdateToLocation:  (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
    {
    NSLog(@"Core location has a position.");

    CLLocationCoordinate2D coordinate = [newLocation coordinate];

    global_lat = coordinate.latitude;
    global_lng = coordinate.longitude;

    [self.locationManager stopUpdatingLocation];

    }

- (void) locationManager:(CLLocationManager *)manager
    didFailWithError:(NSError *)error
{

    NSLog(@"Core location can't get a fix.");
}

Я также проверил, использует ли какое-либо другое приложение GPS! Через 20 минут Стрелка все еще там.... Спасибо за помощь!

ИЗМЕНИТЬ:

Я думаю, что пропустил что-то очень важное, при первом просмотре после запуска приложения есть карта Google! Это мой код:

  GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:g_lat
                                                            longitude:g_lng
                                                                 zoom:15];



    self.mapView = [GMSMapView mapWithFrame:CGRectMake(1.0f, 160.0f, 320.0f, 100)
                                     camera:camera];

    self.mapView.delegate = self;
    self.showsUserLocation = YES;
    self.mapView.trafficEnabled = YES;
    self.mapView.myLocationEnabled = YES;
    self.mapView.settings.myLocationButton = YES;
    self.mapView.settings.compassButton = YES;
    [self.mapView setUserInteractionEnabled:YES];
    [self.mapView setCamera:camera];

    [self.containerView addSubview:self.mapView];

Возможно ли, что карта Google постоянно обновляется? Если да, то как я могу остановить это?


person Davis    schedule 28.08.2013    source источник
comment
Мне просто интересно, какой смысл в этом: NSLog(@"%@", @"Core location can't get a fix.");Можно просто написать: NSLog(@"Core location can't get a fix."); Аргументы не нужны.   -  person allprog    schedule 28.08.2013
comment
Да, вы правы, я что-то изменил и забыл удалить часть аргумента :)   -  person Davis    schedule 28.08.2013
comment
Что касается карты Google: вы отключаете поле myLocationEnabled, когда нажимаете новый контроллер представления? Если нет, то это может поддерживать работу GPS. Вы можете попробовать это, не запуская GPS на следующем контроллере просмотра. Если GPS остается включенным, значит, карта его держит.   -  person allprog    schedule 28.08.2013
comment
В этом была проблема, теперь стрелка пропадает :). Я хотел бы принять это как правильный ответ, но это кажется невозможным, потому что это комментарий?   -  person Davis    schedule 28.08.2013
comment
Я обновил свой ответ, вы можете принять это вместо комментария. :)   -  person allprog    schedule 28.08.2013


Ответы (1)


Что касается карты Google: вы отключаете поле myLocationEnabled, когда нажимаете новый контроллер представления? Если нет, то это может поддерживать работу GPS. Вы можете попробовать это, не запуская GPS на следующем контроллере просмотра. Если GPS остается включенным, значит, карта его держит.

Примечание: это может быть частью нормальной работы. Если ваше приложение перестает получать обновления местоположения, значит, все в порядке. iOS проводит множество оптимизаций, и, вероятно, часть этого заключается в том, что GPS включен на какое-то время. Во время тестирования я увидел, что стрелка обычно остается на некоторое время, даже если приложение уничтожается из XCode.

person allprog    schedule 28.08.2013
comment
Да перестал обновляться. Так это нормально, что стрелка все еще там через 20 минут?? - person Davis; 28.08.2013
comment
О, я пропустил это. 20 минут не мало. Для меня это меньше минуты, я полагаю. По крайней мере, я не видел, чтобы он оставался там намного дольше. - person allprog; 28.08.2013
comment
Попробуйте запретить всем другим приложениям использовать службы определения местоположения: Настройки->Конфиденциальность->Службы определения местоположения и отключите все приложения. Вы даже можете перезагрузить устройство на этом этапе, чтобы убедиться, что оно чистое. Затем перезапустите приложение и включите строку для освобождения диспетчера местоположений, когда вы остановите обновления местоположения. Если вам это нужно снова, просто создайте новый. - person allprog; 28.08.2013