0

我正在尝试使用 iOS 4 编写增强现实应用程序。为了测试这个应用程序,我有一部 iPhone 3GS。

我将用一个例子来解释我的问题:

我想在我的设备上查看山顶的名称。当我在设备屏幕上看到那座山时,我会看到一个带有它名字的标签。

这个想法是在山上或前面看到那个标签,但我看到的是山右边的标签。

如果我有多个地点(例如,两座山和一座教堂),我也会遇到同样的问题。我总是看到右边的标签。

我正在使用 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