0

iOS 4 で拡張現実アプリケーションをプログラムしようとしています。このアプリケーションをテストするために、iPhone 3GS を使用しています。

私の問題を例で説明します:

デバイスで山頂の名前を確認したい。デバイスの画面にその山が表示されると、その名前のラベルが表示されます。

そのラベルは山の上かその前に見えるという考えですが、私は山の右側にラベルが見えます。

複数の場所がある場合 (たとえば、2 つの山と教会)、同じ問題が発生します。私はいつも右側のラベルを見ます。

iPhone AR ツールキットを使用しています。

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]];
}

完全なソース コードはここにあります

アップデート

また、真の見出しを使用するように次を変更しましたが、同じ問題が発生しています。

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

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

    [self updateCenterCoordinate];
}
4

0 に答える 0