Просто возьмите текущие координаты в два отдельных момента и вычтите их.Вот некоторый псевдокод (извините, я не говорю на 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))
. Учитывая угол, вы можете легко получить основное направление.Просто посмотрите, какой из них ближайший.