Estoy usando Location Services
en algunas de mis aplicaciones. Tengo un método que utilizo en mi método locationManager:didUpdateToLocation:fromLocation:
para filtrar ubicaciones malas, inexactas o muy lejanas. Y para minimizar gps "jitter". Esto es lo que uso:iOS Servicios de ubicación Método para filtrar ubicaciones no válidas o incorrectas
/**
* Check if we have a valid location
*
* @version $Revision: 0.1
*/
+ (BOOL)isValidLocation:(CLLocation *)newLocation withOldLocation:(CLLocation *)oldLocation {
// Filter out nil locations
if (!newLocation) return NO;
// Filter out points by invalid accuracy
if (newLocation.horizontalAccuracy < 0) return NO;
if (newLocation.horizontalAccuracy > 66) return NO;
// Filter out points by invalid accuracy
#if !TARGET_IPHONE_SIMULATOR
if (newLocation.verticalAccuracy < 0) return NO;
#endif
// Filter out points that are out of order
NSTimeInterval secondsSinceLastPoint = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
if (secondsSinceLastPoint < 0) return NO;
// Make sure the update is new not cached
NSTimeInterval locationAge = -[newLocation.timestamp timeIntervalSinceNow];
if (locationAge > 5.0) return NO;
// Check to see if old and new are the same
if ((oldLocation.coordinate.latitude == newLocation.coordinate.latitude) && (oldLocation.coordinate.longitude == newLocation.coordinate.longitude))
return NO;
return YES;
}//end
¿Alguien tiene alguna mejora en este método para hacerlo más preciso? ¿Es demasiado alto de horizontalAccuracy
y recibirá muchas ubicaciones no válidas? ¿Debo bajar esto?
¿Hay alguna manera de obtener el "jitter" que da el gps en el iPhone?
estoy empezando a trabajar en algo similar. Estoy pensando en implementar un filtro de Kalman, pero no estoy seguro si esto será más de matar. Estoy interesado en ver las respuestas de las personas sobre esta pregunta. – scord
Sí, también miré un filtro de Kalman, pero la matemática de eso es una locura. –