Может ли iPhone определить, смотрите ли вы на север, юг, восток или запад?
Истинный или притягательный? Есть существенная разница. Около 12,5 градусов, где я сейчас нахожусь.
Всем привет. Я столкнулся с той же проблемой: мне нужно вычислить истинный север на основе положения пользователя. Это приложение должно быть доступно на iphone 3G. Я прочитал ответы ниже, но не очень понимаю. вы когда-нибудь находили решение?





Я не уверен, но вот несколько вариантов:
Соберите две или более точки данных за 3-10 секунд. Нанесите на карту с помощью GPS, где есть тенденция к движению. Это может быть ваше направление.
Кроме того, вы можете использовать акселерометр, чтобы определить, в каком направлении (влево, вправо, вперед, назад) движется сам iPhone. Соедините это с предыдущими данными, и вы сможете получить более точные показания.
Это не очень хорошо, потому что GPS не так чувствителен, как вам хотелось бы, а акселерометры, вероятно, более чувствительны, чем вам хотелось бы, и оба зависят от движения. Но они могут работать.
Боюсь, мне придется пойти именно так - надеюсь, там есть какой-то волшебный компас. В моем Blackberry 8800 есть приложение компаса, и, исходя из его производительности, я всегда подозревал, что BB должен быть в движении (отслеживая координаты GPS), чтобы определить, в каком направлении движется устройство.
В iPhone или iPhone 3G нет компаса. Однако в iPhone 3GS был добавлен цифровой компас, поэтому этот процесс стал проще.
На 1-м поколении или 3G единственный способ определить облицовку - это то, что предлагает stalepretzel. Но имейте в виду, что он будет работать только тогда, когда GPS имеет достаточную блокировку и пользователь действительно движется. Чтобы получить какие-либо полезные данные, вам придется проделать много сглаживания, возможно, с инструкциями для пользователя, чтобы они не двигались во время ходьбы.
В iPhone 3GS есть компас
@Erich Mirabal - Пожалуйста, прочтите отметку времени на ответе. На момент публикации этого 3GS не существовало. Однако я отредактировал свой ответ, чтобы отразить это сейчас.
@Greg Beech - Совершенно верно, и я обновил свой ответ, чтобы отразить это. Такова проблема постоянно меняющихся технологий.
@lc - прошу прощения. Этот материал так легко устаревает. Но я полагаю, что голос "против" помогает сохранить его как живой документ. +1 сейчас.
@Erich Mirabal - Не беспокойтесь, и я согласен с тем, что сохранять эти вещи в живых - это хорошо. Просто уследить за всем этим довольно сложно.
Насколько мне известно, есть в iPhone 3G нет компаса. К сожалению, если я чего-то не упускаю, я не думаю, что просмотр данных GPS и акселерометра поможет вам определить, в каком направлении смотрит iPhone - только направление, в котором вы путешествуете. Простите.
ОБНОВИТЬ: Обратите внимание, что вопрос и этот пост были написаны, когда iPhone 3G был текущей моделью, с тех пор Apple выпустила iPhone 3GS, который представил компас.
Интересно: я только что поискал Compass в App Store, и есть пара приложений, которые используют текущее время и положение солнца, чтобы определить, в какую сторону вы смотрите. По крайней мере, еще одно приложение использует GPS, когда вы двигаетесь, чтобы определять направление движения.
@Erich Mirabal - Если вы нашли время, чтобы прочитать метку времени в этом ответе, вы узнаете информация о 3GS не была общедоступной 5 января 2009 г.. Ваш комментарий, честно говоря, не соответствует действительности. Да, этот ответ стал устаревшим с введением 3GS, но он был правильным в то время и уже давно получил одобрение.
@lc (и Бен) - Прошу прощения. Мой мозг даже дату не зарегистрировал. Все-таки, если парень не знает и только догадывается, зачем отвечать?
Эрих, нигде в своем посте я не сказал «я догадался», основываясь на моих знаниях, я был почти уверен в своем ответе и, несмотря на вашу неосведомленную критику, мой пост стоит правильно. Я не думаю, что он заслуживает голоса против просто потому, что я не был уверен в себе достаточно высокомерно, как вам нравится.
Бен, я пытался отменить голосование против, но не могу, пока вы не отредактируете свой ответ (система не позволяет мне, потому что он слишком старый). Это не имеет ничего общего с высокомерием, просто из-за невнятных разговоров кажется, что это не ответ. Опять же, я прошу прощения за незаслуженный отрицательный голос. Я по-прежнему придерживаюсь своего мнения, что ваш ответ ни к чему не обязывает и кажется бессмысленным без добавления каких-либо технических знаний. Как только вы его отредактируете, я смогу отменить голосование против.
Отсутствие моей абсолютной уверенности в стороне, если вы снова прочтете мой пост, вы увидите, что я также уточнил, что получение данных акселерометра и / или истории координат GPS, которую предлагали другие люди, не даст вам направления, в котором смотрит iPhone, а только направление движения . Это был важный момент, который нужно было поднять, учитывая, что вопрос заключается в том, куда вы идете, а не путешествуете. Так что я чувствую, что это был достойный вклад, и что вы немного критически относитесь к нему. Я понимаю, что в прошлом вы находили неправильные ответы, и ценю вашу готовность отменить свой голос против - я обновил свой ответ. :)
Готово и сделано. Прошу прощения за то, что был болваном. Я никогда не хотел им быть (но, увы, был). Anyhoo ... Голос был отозван. Как там жизнь?
Если вы разрабатываете для 2.2, возможно, вам стоит взглянуть на следующие дополнения к CoreLocation:
CLLocation.course
CLLocation.speed
CLLocationDirection
CLLocationSpeed
CLLocation.course даст вам заголовок, который позволит вам определить север / юг / восток / запад.
Я понимаю, что направление и курс связаны между собой и взяты из данных GPS. Вы можете получить направление / курс только в том случае, если GPS обнаружит, что вы движетесь.
Это правда, возвращаемая информация о заголовке не будет невероятно точной и требует скорости для работы.
В 3G S есть цифровой компас. Это дает вам магнитный север. Если вы включите GPS, он также может показать вам истинный север.
Это может быть своего рода хакерство, но я отслеживал широту и долготу, а затем определял направление.
В моем коде, который возвращает информацию 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 не переместится, чтобы получить широту и долготу. Однако это не займет много времени, чтобы это изменилось!
Пожалуйста, дайте мне код, я не могу понять из этого. Предположим, у нас есть две широты и долгота, например: сначала наше местоположение, а затем второе местоположение, а затем, что я могу сделать?
Придется ли вам держать его в руках?