Как построить компас с iPhone? - PullRequest
6 голосов
/ 07 мая 2009

После некоторых поисков в Google я спрашиваю себя:

Можно ли построить компас (просто показывая направление / направление) с GPS-датчик iPhone 3G?

У меня есть подозрение, что это возможно, только если устройство движется.

Любые идеи приветствуются.

Ответы [ 9 ]

9 голосов
/ 07 мая 2009

С оригинальными iPhone и iPhone 3G, нет.

С iPhone 3GS, выпущенным в июне 2009 года, да. Он включает в себя магнитометр, который позволяет использовать компас.

Базовая структура Core предоставляет эту информацию в классе CLHeading . Вы можете проверить, поддерживает ли устройство эту функцию, с помощью клавиши magnetometer.

Как уже говорили другие, с iPhone 3G вы сможете определять направление движения, когда телефон движется, но вы не сможете определить ориентацию телефона, чтобы указать направление для пользователя. Конечно, пользователь может быть проинструктирован, чтобы ориентировать телефон определенным образом, что в сочетании с движением может точно указывать направление.

4 голосов
/ 14 июля 2009

В качестве обновления к этому iPhone 3GS действительно включает в себя действующий цифровой компас, который доступен для приложений. Это делает написание такого приложения тривиальным.

См. Класс CLHeading и свойство magneticHeading.

http://developer.apple.com/iphone/library/documentation/CoreLocation/Reference/CLHeading_Class/Reference/Reference.html

Вы также можете получить истинное направление на север, предполагая, что телефон успел определить свое географическое местоположение.

4 голосов
/ 07 мая 2009

Да, вы правы, это единственный способ. Хотя я думаю, что, узнав направление, вы можете отслеживать небольшие движения телефона от датчиков ускорения и точно рисовать направление, даже если исходное движение останавливается.

Примечание: Это устаревшая информация, она была правильной вплоть до выхода 3G. К сожалению, я не могу удалить принятый ответ, поэтому просто посмотрите ниже.

2 голосов
/ 10 сентября 2010

Вам просто нужно реализовать функции диспетчера местоположения, чтобы найти точное направление, в котором указывает ваш iPhone.

Итак, Вы можете проверить это:

CLLocationManager * locationManager; [locationManager startUpdatingHeading];

И всякий раз, когда вы вызываете startUpdatingHeading (), он будет вызывать Метод "- (void) locationManager: (CLLocationManager *) didUpdateHeading: (CLHeading *) newHeading", который необходимо переопределить в диспетчере расположений.

И это все, что вы можете найти в каком направлении iPhone 3GS указывает, используя newHeading.magnHeading или newHeading.trueHeading.

Вы удивитесь, что вы можете получить точно такое же направление, которое дает вам магнитный компас.

2 голосов
/ 07 мая 2009

Компас покажет только направление, в котором вы двигаетесь. Он не скажет вам направление, в котором находится iPhone. Поэтому даже использование акселерометра для отслеживания поворота / перемещения iPhone не обязательно позволит вам указывать на север на дисплее.

(Т.е. вы не будете знать, движется ли он вбок или мы держим iPhone вверх дном или что-то в этом роде. Вы просто будете знать, куда вы двигаетесь ...)

РЕДАКТИРОВАТЬ декабрь 2010 г .: С тех пор как был написан этот оригинальный пост, iPhone 3GS (выпущенный летом '09) и более новые модели имеют электронный компас. Этот компас может показывать правильное направление, когда не двигается ... (Это означает, что теперь компас может указывать на север независимо от направления, в котором iPhone удерживается или движется.)

2 голосов
/ 07 мая 2009

Сканируя доступные приложения, я пришел к выводу, что есть два способа сделать компас для текущего iPhone 3G.

  1. Требуется телефон для перемещения. Используйте разницу в данных GPS для определения направления.
  2. Требовать от пользователя навести телефон на солнце. Используйте GPS и информацию о времени, чтобы определить направления.
1 голос
/ 08 мая 2009

Как примечание: акселерометры в iphone не отслеживают только вращения, так что вы не можете сделать правильное 6-осевое инерционное отслеживание положения и направления.

1 голос
/ 07 мая 2009

Если вы используете аналоговые часы, вы можете использовать приведенные ниже инструкции для наложения компаса.

Это можно использовать для «калибровки» компаса и использования акселерометра, указывающего на север, когда телефон перемещается.

Очевидно, что это не очень точно ... "низкотехнологичное решение высокотехнологичной проблемы"

(инструкция взята из http://www.qwerty.co.za)

В северном полушарии положите часы на ровный участок земли, направьте часовую стрелку в направлении солнца. Линия север-юг снова является линией, разделяющей угол между часовой стрелкой и линией 12 часов пополам.

В Южном полушарии поместите часы на ровный участок земли, Направьте цифру 12 в направлении солнца. Линия север-юг - это линия, делящая угол между часовой стрелкой и линией 12 часов пополам.

1 голос
/ 07 мая 2009

Я думаю, что вы правы с вашим подозрением, позиция GPS - это одна точка без какой-либо информации о направлении. Чтобы определить направление, вам нужны две точки для создания вектора направления. Автомобильные навигационные системы работают так же. Они могут показывать вектор направления, только если машина движется.

...