2012-09-20 13 views
5

Ciao amico Ho visto molti post per quanto riguarda problemi precisione con GPS, ma non il suo lavoro tutto il tempoGPS Iphone non sta dando latitudine accurata e la longitudine

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

    NSString *latstr = [NSString stringWithFormat:@"%f", newLocation.coordinate.latitude]; 
    NSString *longstring=[NSStringstringWithFormat:@"%f",newLocation.coordinate.longitude]; 

    if (abs(howRecent)>5.0) 
    { 
     [self.locationManager startUpdatingLocation]; 
     return; 
     } 
    if(abs(newLocation.horizontalAccuracy)<0.0f) 
    { 
     [self.locationManager startUpdatingLocation]; 
     return; 
    } 
    if(newLocation.horizontalAccuracy>65.0f) 
    { 
     [self.locationManager startUpdatingLocation]; 
     return; 
    } 
    self.latstring = [latstr copy]; 
    self.longstr = [longstring copy]; 

    if((updateLocationFirst||loadFirstView)) 
    {  
     [[NSUserDefaults standardUserDefaults]setObject:latstring forKey:@"Latitude"]; 
     [[NSUserDefaults standardUserDefaults]setObject:longstr forKey:@"Longitude"]; 
     [self displayParticularDaySpecial]; 
     loadFirstView=FALSE; 
     updateLocationFirst=FALSE; 
     [self.locationManager stopUpdatingLocation]; 
    } 
} 

Qui il problema è che io mando la latitudine e la longitudine di la google api rispetto ad alcuni indirizzi se sto diminuendo il valore di accuratezza richiedendo molto tempo per caricare e questo valore sta avendo problemi quando arrivi a destinazione rispetto alla destinazione con 0,6 miglia di differenza.

+1

Tra l'altro 'abs (newLocation.horizontalAccuracy) <0.0f' non sarà mai vero, vero? Come può il valore assoluto di un numero essere inferiore a zero? – Rob

risposta

1

Avete impostato l'ubicazione desiderata nella precisione su CLLocationManager? Di default l'intervallo è piuttosto ampio.

Ci vorrà del tempo per acquisire un valore molto preciso.

2

È necessario fare riferimento allo Location Awareness Programming Guide che fornisce eccellenti esempi di programmazione per determinare la posizione.

Come vedrete nella demo di quel documento, quando si specifica start the standard location manager, si indica in genere la precisione richiesta. E una volta avviato il gestore della posizione, non è necessario riavviarlo (come sembra che tu stia facendo nel tuo esempio di codice). Il metodo didUpdateLocations verrà chiamato ancora e ancora, con precisione crescente, tutto da solo. Non è necessario riavviare il gestore località ... continua fino a quando non lo disattivi. Per definizione, se sei in didUpdateLocations, significa che è già attivo.

Ho anche notato che stai usando il vecchio didUpdateToLocation. Se stai programmando per iOS 6, vuoi veramente usare didUpdateLocations, che è la versione corrente del metodo CLLocationManagerDelegate.

Infine, si parla di essa richiede molto tempo per ottenere la vostra posizione. Questo è molto possibile. In effetti, in alcune aree, non sarai mai molto vicino (o in alcun luogo). La tua app dovrebbe presupporre che le posizioni accurate richiederanno un po 'di tempo e che dovresti gestirle con garbo se non ottieni mai una posizione precisa, il che è molto probabile.

Problemi correlati