2012-09-20 22 views
5

Hola amigo que he visto muchos post con respecto a un problema precisión con GPS, pero no su trabajo todo el tiempoIphone GPS no está dando la latitud exacta y longitud

-(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]; 
    } 
} 

Aquí el problema es que yo envío a la latitud y longitud de la API de Google con respecto a algunas direcciones si estoy disminuyendo el valor de precisión requiere mucho tiempo para cargar y este valor tiene un problema cuando se llega al destino con respecto al destino con una diferencia de 0,6 millas.

+1

Por cierto 'abs (newLocation.horizontalAccuracy) <0.0f' nunca será cierto, ¿o sí? ¿Cómo puede el valor absoluto de un número ser menor que cero? – Rob

Respuesta

1

¿Ha configurado desiredLocationAccuracy en su CLLocationManager? Por defecto, el rango es algo amplio.

Tomará algún tiempo para obtener un valor muy exacto.

2

Debe consultar el Location Awareness Programming Guide que proporciona excelentes ejemplos de programación para determinar su ubicación.

Como verá en la demostración de ese documento, cuando start the standard location manager, generalmente le dice qué precisión necesita. Y una vez que inicie el administrador de ubicación, no tiene que volver a iniciarlo (como parece estar haciendo en su ejemplo de código). El método didUpdateLocations se llamará una y otra vez, con mayor precisión, por sí solo. No necesita volver a iniciar el administrador de ubicación ... continúa hasta que lo desactive. Por definición, si está en didUpdateLocations, significa que ya está encendido.

También noté que está utilizando el antiguo didUpdateToLocation. Si está programando para iOS 6, realmente quiere usar didUpdateLocations, que es la versión actual de ese método CLLocationManagerDelegate.

Finalmente, menciona que demora mucho tiempo en obtener su ubicación. Eso es muy posible. De hecho, en ciertas áreas, nunca llegarás a estar muy cerca (ni a ninguna ubicación). Su aplicación debe suponer que las ubicaciones precisas tardarán un tiempo, y debe manejar con elegancia si nunca obtiene una ubicación realmente precisa, lo cual es muy posible.

Cuestiones relacionadas