True Heading и Magnetic Heading на iPhone AR Toolkit неправильно отображают ярлыки - PullRequest
0 голосов
/ 14 октября 2011

Я пытаюсь запрограммировать приложение с дополненной реальностью для iOS 4. Для тестирования этого приложения у меня есть iPhone 3GS.

Я объясню свою проблему на примере:

Я хочу увидеть название вершины горы на моем устройстве. Когда я вижу эту гору на экране моего устройства, я вижу этикетку с ее названием.

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

У меня та же проблема, если у меня есть более одного места (например, две горы и церковь). Я всегда вижу надпись справа.

Я использую iPhone AR Toolkit.

У меня проблема с компасом iPhone? Вы знаете, почему у меня такая проблема?

Этот метод вызывается для начала прослушивания GPS:

- (void)startListening
{   
    // start our heading readings and our accelerometer readings.
    if (![self locationManager]) {
        CLLocationManager *newLocationManager = [[CLLocationManager alloc] init];
        [self setLocationManager: newLocationManager];
        [newLocationManager release];
        [[self locationManager] setHeadingFilter: 1.0];
        [[self locationManager] setDistanceFilter:2.0];
        [[self locationManager] setDesiredAccuracy: kCLLocationAccuracyNearestTenMeters];
        [[self locationManager] startUpdatingHeading];
        [[self locationManager] startUpdatingLocation];
        [[self locationManager] setDelegate: self];
    }

    if (![self accelerometerManager])
    {
        [self setAccelerometerManager: [UIAccelerometer sharedAccelerometer]];
        [[self accelerometerManager] setUpdateInterval: 0.75];
        [[self accelerometerManager] setDelegate: self];
    }

    if (![self centerCoordinate]) 
        [self setCenterCoordinate:[ARCoordinate coordinateWithRadialDistance:1.0 inclination:0 azimuth:0]];
}

Вы можете найти полный исходный код здесь .

UPDATE

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

- (void)locationManager:(CLLocationManager *)manager
       didUpdateHeading:(CLHeading *)newHeading
{
    //latestHeading = degreesToRadian(newHeading.magneticHeading);
    latestHeading = degreesToRadian(newHeading.trueHeading);

    if (prevHeading == -1)  
        prevHeading = newHeading.magneticHeading;

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