2009-05-07 3 views
6

После некоторого поиска в Google, я спрашиваю себя:Как построить компас с iPhone?

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

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

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

+1

Я уверен, что я только что увидел это на телевизионной рекламе для iPhone ... –

+2

Да, это возможно только при перемещении устройства. Например, сравните модели Garmin 60C и 60Csx. Последний имеет встроенный электронный компас. Однако, у iPhone нет встроенных встроенных датчиков перемещения/поворота? Сочетание входных данных от этого и GPS-сенсора может создать (по крайней мере) приблизительный компас (наверняка все равно потребуется немного переместить устройство как часть инициализации компаса). –

+0

Обратите внимание, что даже электронный компас в Garmin 60Csx ужасно неточен по сравнению с даже приличным компасом магнитной стрелы на 25 долларов. Я еще не знаком с электронным компасом, который подходит для реальной навигации. Лучшее, что я видел, можно только надеяться, чтобы рассказать вам о разнице между NE и N. – user57368

ответ

4

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

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

+0

Согласитесь ... см. Мой комментарий выше :) –

1

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

2

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

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

Просто дон Не пытайтесь найти свой путь домой ночью. ;-) –

+1

Он может использовать звезды вместо этого :) – vava

2

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

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

EDIT декабрь 2010: Поскольку это оригинальное сообщение было написано, iPhone 3GS (начало лета '09) и более новые модели имеют электронный компас. Этот компас может показывать правильное направление, не перемещаясь ... (Это означает, что компас теперь может указывать на север, независимо от направления, в котором удерживается или движется iPhone.)

9

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

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

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

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

1

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

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

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

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

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

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

+1

Не нужно размещать на ровной поверхности, когда в северном полушарии? ;) –

+0

Er ... это quasundial, не так ли? –

1

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

4

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

См. Категорию CLHeading и magneticHeading.

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

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

+0

Прохладный обновления. Благодаря... – Stefan

2

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

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

CLLocationManager * locationManager; [locationManager startUpdatingHeading];

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

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

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

Смежные вопросы