Pregunta

Estoy usando las condiciones siguientes en el fin de asegurarse de que la ubicación que consigo tiene una precisión adecuada, en mi caso kCLLocationAccuracyBest. Pero el problema es que sigo teniendo lugar incorrecto.

// Filter out nil locations
if(!newLocation)
    return;

// Make sure that the location returned has the desired accuracy
if(newLocation.horizontalAccuracy < manager.desiredAccuracy)
    return;

// Filter out points that are out of order    
if([newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp] < 0)
    return;

// Filter out points created before the manager was initialized
NSTimeInterval secondsSinceManagerStarted = [newLocation.timestamp timeIntervalSinceDate:locationManagerStartDate];
if(secondsSinceManagerStarted < 0)
    return;

// Also, make sure that the cached location was not returned by the CLLocationManager (it's current) - Check for 5 seconds difference
if([newLocation.timestamp timeIntervalSinceReferenceDate] < [[NSDate date] timeIntervalSinceReferenceDate] - 5)
    return;

Cuando activo el GPS, i obtener resultados inexactos antes de que realmente obtener un resultado preciso. ¿Qué métodos utiliza para obtener información sobre la ubicación exacta / precisa?

¿Fue útil?

Solución 2

La razón principal que estaba recibiendo resultados inexactos fue a causa de esta condición:

if(newLocation.horizontalAccuracy < manager.desiredAccuracy)

Yo estaba usando kCLLocationAccuracyBest como desiredAccuracy y es un número negativo. No se debe utilizar para la comparación.

Solución: if(newLocation.horizontalAccuracy < 10.0)

Otros consejos

GPS es lento, al menos en comparación con la paciencia del usuario, por lo que el gerente de locación devuelve lo mejor que tiene hasta que se obtiene un nuevo GPS, lectura válida. Usted puede hacer esperar al usuario sin importar el tiempo que se tarda en obtener una lectura precisa, o tener algún tipo de retroalimentación incremental de la manera Mapas Google hace, con un círculo de un punto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top