Так что я имею дело с некоторыми проблемами точности с iPhone GPS. У меня есть приложение, которое использует местоположение.
В методе делегата locationManager: didUpdateToLocation: fromLocation:
Мне возвращается местоположение. После небольшого исследования выясняется, что GPS не всегда точен при первом возвращаемом результате, даже если для свойства desiredAccuracy
установлено значение kCLLocationAccuracyBest
.
Чтобы обойти это, я не звоню stopUpdatingLocation
, пока он не будет возвращен newLocation:
как минимум 3 раза (это очень быстро). Я также поигрался с двумя другими «требованиями» относительно того, следует ли stopUpdatingLocation
и вернуть newLocation
. Один из способов, которым я пытался, состоял в том, чтобы проверить lat и long для newLocation
и сравнить с oldLocation
, и если они не были идентичны, тогда продолжать обновление местоположения. Я также попытался проверить расстояние между oldLocation
и newLocation
, и если оно меньше 20 метров, это нормально. Оба из них проверены с возвратом не менее 3 прогонов. Последний способ менее "строг", поскольку newLocation
и oldLocation
довольно сложно избежать 100% идентичности, если пользователь находится в движущемся транспортном средстве.
Теперь моя проблема в том, что даже при выполнении вышеизложенного (в основном не принимаю местоположение, пока не произойдет несколько обновлений на CLLocationManager
И не проверим расстояние между CLLocations
(или они идентичны), я до сих пор иногда получаю странные результаты для локаций при тестировании.
Иногда было бы исправлено, если бы я покинул приложение, зашел в Maps.app, использовал GPS, затем открыл многозадачность, принудительно вышел из приложения и снова открыл его, чтобы получить чистый запуск.
Какой опыт и возможные решения люди использовали для решения той же проблемы? Комментарии и решения приветствуются:)