Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Christian GossainОтветов: 1

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

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

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

iphoneios4

Ответы

Ответ 1 · рейтинг 2 · R. Martinho Fernandes

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы