Вопрос

До iOS 4.0, CoreLocation Был правильно сообщать о высоте, теперь она всегда сообщает как 0 футов.

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
    NSString *tLatitude  = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.latitude]; 
    NSString *tLongitude = [NSString stringWithFormat:@"%3.5f", newLocation.coordinate.longitude];
    /*  the following returns 0 */
    NSString *tAltitude  = [NSString stringWithFormat:@"%i",    newLocation.altitude];

    /* theres more code, but it's not relevant, 
                      and this worked prior to iOS 4.0*/
    [manager stopUpdatingLocation];
}

Не работая ни на устройстве, ни симуляторе, кто -нибудь еще испытывает эту проблему?

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

Решение

Если вы используете startMonitoringSignificantLocationChanges, что было новой функцией для iOS 4.0, тогда вы не получите обновления высоты. В этом режиме с низкой мощностью используются только башни сотовой связи, чтобы выяснить местоположение пользователя, и этот метод не сообщает высота.

В более общем плане, у iPhone есть три способа выяснения вашего местоположения-сотовые башни, Wi-Fi и GPS. Вы получите высоту только после использования GPS. Так что даже если вы установите свой desiredAccuracy Настройка, чтобы быть действительно точным, чтобы заставить устройство использовать GPS, если пользователь находится в помещении, iPhone, вероятно, не сможет получить сигнал GPS и будет отступить на ячейку или Wi-Fi. В этом случае вы не получите высоту. Также рассмотрим пользователей, которые находятся на iPod Touch-он имеет возможность получить местоположение только через Wi-Fi, и, следовательно, также не будет сообщать о высоте.

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

Две вещи, которые вы могли бы попробовать. Прежде всего, попробуйте установить менеджер местоположения desiredAccuracy к kCLLocationAccuracyBest.

Если это не сработает, попробуйте удалить [manager stopUpdatingLocation];, и положите NSLog в didUpdateToLocation с высотой. Иногда необходимо немного сузить, прежде чем он отобразит высоту.

От Ссылка на основание данных местоположения:

А CLLocationDistance Тип данных (тип данных для высоты) double. Анкет Форматер, который вы используете для своего stringWithFormat является integer. Анкет Вам нужно бросить свою высоту на integer, сначала или используйте double (%f) Форматер.

Основное местоположение не всегда сообщает о высоте сразу. Обычно я проверяю нулевую высоту в моем методе «успеха». Если высота все еще 0, я продолжаю проверять, в противном случае я поворачиваюсь.

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