2011-09-12 13 views
11

Ho un responsabile CLLocation chiamato "miaLocazione".Frequenza di aggiornamento del gestore località, iphone

myLocation = [[CLLocationManager alloc] init]; 
    myLocation.desiredAccuracy = kCLLocationAccuracyBestForNavigation ; 
    myLocation.distanceFilter = 10 ; 
    myLocation.delegate=self; 



    locationEnabledBool = [CLLocationManager locationServicesEnabled]; 



    if (locationEnabledBool ==NO || ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied)) { 

    // LocationText.text = @"Location Service Disabled "; 
     UIAlertView *locationAlert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled" 
                 message:@"To re-enable, please go to Settings and turn on Location Service for this app." 
                 delegate:nil 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:nil]; 
     [locationAlert show]; 
     [locationAlert release]; 

    } 

     [myLocation startUpdatingLocation]; 

e la posizione funzione di aggiornamento è

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 
{ 

NSLog(@"old location is %f, %f ", oldLocation.coordinate.latitude, oldLocation.coordinate.longitude); 
NSLog(@"new location is %f,%f",newLocation.coordinate.latitude, newLocation.coordinate.longitude); 
} 

C'è un modo per trovare la frequenza di aggiornamento location manager, e se questo può essere aumentato o diminuito?

+1

Non esiste questa opzione nel gestore posizione .... Il delegato verrà chiamato ogni volta che viene rilevato un cambiamento di posizione. Ma puoi variare l'accuratezza ... Questo è se debba essere cambiato ogni dieci metri di cambiamento o 100 mo 1 Km ... ecc ... – booleanBoy

+0

Ma l'aggiornamento di posizione si verifica anche se il dispositivo è fermo. – alekhine

+0

vuoi dire che puoi ottenere le coordinate della posizione anche quando il dispositivo è fermo ....? – booleanBoy

risposta

21

L'aggiornamento della posizione inizia solo quando si chiama il metodo [locationManager startUpdatingLocation].

È possibile controllare la frequenza dell'aggiornamento utilizzando NSTimer. Chiamare il metodo startUpdatingLocation a intervalli regolari ogni volta che è necessario un aggiornamento di posizione e quindi chiamare immediatamente il metodo stopUpdatingLocation. La volta successiva si otterrà un aggiornamento della posizione solo nell'intervallo impostato su NSTimer.

+0

Grazie per la vostra pazienza per avermi aiutato. la tua risposta sicuramente ha aiutato. la prossima volta farò una domanda più chiara. – alekhine

+0

Prego :) – booleanBoy

+0

@ amol-subhedar ho bisogno di un favore da parte tua ... potresti aiutarmi? :) – booleanBoy

2

Per rilevare anche il minimo dei movimenti, è necessario impostare

myLocation.distanceFilter = kCLDistanceFilterNone ; 

Ma, si prega di tenere a mente, lasciando location manager per generare aggiornamenti anche per il più piccolo dei movimenti può finire nel sacco di utilizzo della batteria .

+1

kCLDistanceFilterNone è l'impostazione predefinita ... – Jake

Problemi correlati