Вопрос по iphone – Получение высоты (высоты от уровня моря) моего местоположения в iphone SDK

4

Я пытаюсь получить высоту моего местоположения в моем приложении. Но каждый раз, когда я пытаюсьaltitude собственностьюCLLocation объект, который я получаю0.00 в результате.

Я погуглил свой запрос и получил похожий вопросВот а такжеВот, Эта ссылка говорит, что если я получу доступ к CLLocation с помощью Wi-Fi или сотовой вышки, он будет нулевым. Даже если я попытаюсь установитьdesireAccuracy Лучше, чем когда-либо, убедитесь, что приложение будет использовать GPS. Также говорится, что если я в помещении, я не смогу получить доступ к GPS.

Во многих случаях это не уверен, что приложение будет использовать только GPS. Я хочу какой-то способ получить высоту от Wi-Fi или сотовой башни тоже. За это я погуглил еще и получилGoogle Планета Земля API но я думаю, что это только для технологии Microsoft .net.

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

Может ли кто-нибудь предложить мне, как получить высоту моего местоположения от ios. Есть ли доступный способ или нет? Если да, то, пожалуйста, проведите меня в правильном направлении.

Заранее спасибо.

Edit1

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

Edit2

Согласно ответу @ fishinear'а, я попробовал следующий код:

- (void)viewDidLoad
{
    [super viewDidLoad];
    manager = [[CLLocationManager alloc] init];
    [manager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
    [manager setDistanceFilter:kCLDistanceFilterNone];
    [manager setDelegate:self];
    [manager startUpdatingLocation];
// Do any additional setup after loading the view, typically from a nib.
}

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if ([newLocation verticalAccuracy] >= 0) {
        NSLog(@"Altitude = %lf",newLocation.altitude);
    }
    NSLog(@"Vertical Accuracy : %lf",newLocation.verticalAccuracy);
}

verticalAccuracy всегда-1, Он не меняется даже после запуска приложения до последних 30 минут. Я бегу на iOS 4.3.2 на моем 3GS. Я нахожусь в помещении, поэтому я думаю, что это не доступ к GPS с использованием этого кода даже.

Ваш Ответ

2   ответа
0

Android - получить высоту по долготе и широте? есть решение для Android, но оно легко адаптируется к iOS.

Ответ заключается в использовании Веб-служба запросов на повышение прав

Из верхнего ответа там, в основном, вы просто отправляете веб-запрос HTML на:

http://gisdata.usgs.gov/xmlwebservices2/elevation_service.asmx/getElevation?X_Value=" + 
             String.valueOf(longitude)   + 
             "&Y_Value=" + String.valueOf(latitude)             
             + "&Elevation_Units=METERS&Source_Layer=-1&Elevation_Only=true"; 

Затем вы можете разобрать текст ответа между<double>...</double> теги

Редактировать Похоже, ты пытаешься подняться за пределы Соединенных Штатов.

Google Maps API предоставляет службу повышения и документацию наhttps: //developers.google.com/maps/documentation/javascript/elevatio

Благодарность. ваш отредактированный ответ помог :) Developers.google.com / карты / документы / JavaScript / высота это то, что я искал. Kapil Choubisa
Я пытался использовать этот URL и передал значения x и y22.998851594142938 & 72.5317382812553173828125 соответственно и ответ<double>-1.79769313486231E+308</double>. Что я понимаю с этим? Как получить рост с этим? Kapil Choubisa
4

GPS всегда будет использоваться, если для параметра CLLocationManager вы установите для параметра «Желаемая точность» значение «Лучшее» или «BestForNavigation», а для параметра «DistanceFilter» - значение «kCLDistanceFilterNone». Затем вы также получите значения высоты в событии CLLocation.

Однако требуется некоторое время, прежде чем GPS "заблокируется" на достаточном количестве спутников, чтобы иметь возможность сообщать о высоте. В течение этого времени он будет сообщать о событиях CLLocation без значений высоты. Поэтому вы должны игнорировать первые пару событий, пока значение verticalAccuracy не будет достаточно для вас. Также проверьте временную метку, потому что иногда первое событие CLLocation является старым.

Проверьте поле вертикальной точности в CLLocation. Это указывает на точность значения высоты и является отрицательным, если высота не была определена. fishinear
Но как я могу убедиться, что значение высоты надёжно среди немногих значений, как ты сказал ?? Kapil Choubisa
Проверьте мойedit2 обсуждаемый. Я реализовал ваше предложение, но оно не сработало. Kapil Choubisa
Подтвердили ли вы, что Службы определения местоположения для этого приложения включены? Dmorneault
Вы утверждаете, что находитесь в помещении. Находясь в помещении, у GPS могут возникнуть проблемы с «просмотром» достаточного количества спутников для определения высоты. Попробуйте сначала на улице, если он там работает, то в этом причина. fishinear

Похожие вопросы