Как получить направление движения, используя только GPS?

Как я могу получить направление движения (N, NE, E, SE, S, SW, W, NW) на iPhone, используя только информацию от GPS (долгота и широта)?

Я не хочу пользоваться компасом, потому что он не всегда точен.


person Christian Gossain    schedule 27.12.2010    source источник
comment
Знаете ли вы, что GPS тоже не всегда точен?   -  person Gabe    schedule 27.12.2010
comment
Вы будете удивлены, насколько точен GPS. Это намного точнее, чем магнитометр, особенно на iPhone 4 и iPad. Компасу приходится иметь дело с таким количеством помех от электроники вокруг него.   -  person Christian Gossain    schedule 27.12.2010
comment
Вот вопрос и ответ о добавлении категории в CLLocation, которая легко вычисляет пеленг, основываясь только на паре широта/долгота: Bearing-w-haversine-function" title="категория cllocation для расчета функции подшипника w haversine"> stackoverflow.com/questions/3925942/   -  person Matthew Frederick    schedule 27.12.2010


Ответы (1)


Просто возьмите текущие координаты в два разных момента и вычтите их. Вот некоторый псевдокод (извините, я не говорю на Objective-C):

start <- get current position
wait some time
end <- get current position
direction = end - start

Это даст вам вектор, который указывает в текущем направлении. Чтобы получить угол, вы можете использовать точечный продукт вектора.

product <- start.lat * end.lat + start.lng * end.lng
start_length <- sqrt(start.lat^2 + start.lng^2)
end_length <- sqrt(end.lat^2 + end.lng^2)
angle <- arccos(product/(start_length * end_length))

Учитывая угол, вы можете легко получить кардинальное направление. Просто посмотрите, какой из них ближе.

person R. Martinho Fernandes    schedule 27.12.2010