ваша логика в порядке.Это плохая логика iPhone.
При написании такого кода я вижу две основные проблемы.
1) То, что я называю отравленными точками.Это кешированные точки, которые iPhone ошибочно сообщает.Вы можете проверить их, отбросив любые точки, где отметка времени совпадает с предыдущей точкой или является более ранней.Также может стоить записать частоту посещений какой-либо точки.Отравленные точки, как правило, посещаются снова и снова (возможно, 5 раз) каждый раз как прыжок с вашего реального пути.Если вы можете заметить их, вы можете исключить их.
2) Точность - особенно изменения высоты.Посмотрите на показатели точности по горизонтали и вертикали, возвращаемые с каждой точкой.И посмотри на высоту.Если они неточны, то скорость и, следовательно, пройденное расстояние тоже будут.Одной из причин плохих расстояний является то, что один конец вашей пары имеет высоту, а другой - нет: «не» классифицируется как ноль - поэтому, если вы находитесь на 200 м над уровнем моря в то время, когда вы только что прошли 200 м без движения!
Чтобы повысить точность, вам, возможно, лучше написать свой собственный алгоритм определения большого расстояния по кругу (или даже простой Пифагор, учитывая малые расстояния), который игнорирует высоту, или просто лучше фильтровать точки, которые вы используете.
Я изо всех сил пытаюсь найти надежный способ измерения местоположения, расстояния и скорости с помощью iPhone (3GS).и iPad или Touch будет только хуже, я думаю.
Если вы можете отправить мне электронное письмо на Эндрю Дот Хоукена на пятьдесят евро, то я пришлю вам свое программное обеспечение для регистрации в iPhone.Было бы здорово, если бы вы могли запустить его за пару поездок и дать мне результаты - я пытаюсь решить ту же проблему, но иметь только наборы данных GPS для работы.