Вопрос

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

Можно ли создать компас (простой указатель курса) с помощью GPS-датчика iPhone 3G?

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Тот Самый Структура основного местоположения предоставляет эту информацию в Закрепление класс.Вы можете проверить, есть ли поддержка устройств эта функция с помощью magnetometer Клавиша.

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

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

См. класс CLHeading и свойство eticHeading .

http://developer.apple .com / iphone / библиотека / документация / CoreLocation / Справка / CLHeading_Class / Справка / reference.html

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

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

<Ол>
  • Требуется телефон для перемещения. Используйте разницу в данных GPS, чтобы определить направление.
  • Требуйте, чтобы пользователь указывал телефон на солнце. Используйте GPS и информацию о времени, чтобы определить направления.
  • Вам просто нужно реализовать функции диспетчера местоположений, чтобы найти точное направление, в котором указывает ваш iPhone.

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

    CLLocationManager * locationManager; [locationManager startUpdatingHeading];

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top