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 Map! Това е моят код:

  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
Опитайте да забраните на всички други приложения да използват услугите за местоположение: Settings-›Privacy-›Location Services и изключете всички приложения. Можете дори да рестартирате устройството в този момент, за да се уверите, че е чисто. След това стартирайте отново приложението си и включете ред за освобождаване на мениджъра на местоположението, когато спрете актуализациите на местоположението. Ако имате нужда от него отново, просто създайте нов. - person allprog; 28.08.2013