Sviluppo iPhone - Località Precisione
-
27-09-2019 - |
Domanda
Sto usando seguenti condizioni in-fine di assicurarsi che la posizione ottengo ha adeguato la precisione, nel mio caso kCLLocationAccuracyBest. Ma il problema è che ho ancora ottenere posizione imprecisa.
// 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;
Quando posso attivare il GPS, ottengo risultati non accurati prima che io realmente ottenere un risultato preciso. Quali metodi si usa per ottenere accurate / informazioni precise sulla posizione?
Soluzione 2
Il motivo principale mi stavo risultati non accurati era a causa di questa condizione:
if(newLocation.horizontalAccuracy < manager.desiredAccuracy)
Stavo usando kCLLocationAccuracyBest
come desiredAccuracy ed è un numero negativo. Non si dovrebbe usare per il confronto.
Soluzione:
if(newLocation.horizontalAccuracy < 10.0)
Altri suggerimenti
GPS è lento, almeno rispetto alla pazienza degli utenti, in modo che il location manager restituisce il meglio che ha fino a quando non ottiene un nuovo, GPS valido letto. O si può fare l'utente attesa tutto il tempo necessario per ottenere una lettura accurata, o hanno qualche tipo di feedback incrementale il modo in cui Google Maps fa, con un cerchio di un punto.