Может ли iPhone определить, обращены ли вы на север, юг, восток или запад? - PullRequest
3 голосов
/ 05 января 2009

Может ли iPhone определить, обращены ли вы на север, юг, восток или запад?

Ответы [ 5 ]

7 голосов
/ 05 января 2009

Если вы разрабатываете для 2.2, вы можете взглянуть на следующие дополнения к CoreLocation:

CLLocation.course

CLLocation.speed

CLLocationDirection

CLLocationSpeed ​​

CLLocation.course даст вам направление, которое позволит вам определить север / юг / восток / запад.

2 голосов
/ 05 января 2009

В iPhone или iPhone 3G нет компаса. Однако в iPhone 3GS появился цифровой компас, поэтому этот процесс стал проще.

На 1-м поколении или 3G единственный способ определить облицовку - это то, что предлагает stalepretzel. Но имейте в виду, что он будет работать только тогда, когда GPS имеет достаточную блокировку и пользователь фактически перемещается. Вам потребуется много сглаживания, чтобы получить какие-либо полезные данные, возможно, с инструкциями для пользователя, чтобы они оставались неподвижными во время ходьбы.

2 голосов
/ 05 января 2009

Я не уверен, но вот несколько вариантов:

Соберите две или более точек данных за 3-10 секунд. Разметьте, с GPS, где движение имеет тенденцию к. Это может быть вашим направлением.

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

Это не очень хорошо, потому что GPS не так чувствителен, как вам хотелось бы, и акселерометры, вероятно, более чувствительны, чем вы хотели, и оба зависят от движения. Но они могут работать.

0 голосов
/ 25 января 2009

Это может быть немного хаком, но я занимался отслеживанием широты / долготы и затем определял по этому направлению.

В моем коде, который возвращает информацию GPS, я создал делегата, который вернул бы широту и долготу

[[self delegate] currentDirectionLat:newLocation.coordinate.latitude Long:newLocation.coordinate.longitude];

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

-(void)currentDirectionLat:(float)latitude Long:(float)longitude
{
    prevLongitude = currentLongitude;
    prevLatitude  = currentLatitude;

    currentLongitude = longitude;
    currentLatitude = latitude;

    NSString *latDirection = @"";
    if (currentLatitude > prevLatitude)
        latDirection = @"N";
    else if (currentLatitude < prevLatitude)
        latDirection = @"S";

    NSString *longDirection = @"";
    if (currentLongitude > prevLongitude)
        longDirection = @"E";
    else if (currentLongitude < prevLongitude)
        longDirection = @"W";

    if ([longDirection length] > 0)
        [lblDirection setText:[NSString stringWithFormat:@"%@%@",latDirection,longDirection]];  
}

Я не проверял это на 100%, но, похоже, работал над одним приложением, которое я писал. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, и я могу отправить вам мой код, который я сделал для него.

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

0 голосов
/ 05 января 2009

Насколько мне известно, в iPhone 3G нет компаса . К сожалению, если только я что-то упустил, я не думаю, что просмотр данных GPS и акселерометра поможет вам определить, в каком направлении находится iPhone - только направление, в котором вы путешествуете. К сожалению.

ОБНОВЛЕНИЕ : обратите внимание, что вопрос и этот пост были написаны, когда iPhone 3G была текущей моделью, с тех пор Apple выпустила iPhone 3GS , в котором представил компас .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...