我正在尝试使用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]];
}
您可以找到完整的源代码here。
更新
我还修改了以下内容以使用真正的标题,但我遇到了同样的问题:
- (void)locationManager:(CLLocationManager *)manager
didUpdateHeading:(CLHeading *)newHeading
{
//latestHeading = degreesToRadian(newHeading.magneticHeading);
latestHeading = degreesToRadian(newHeading.trueHeading);
if (prevHeading == -1)
prevHeading = newHeading.magneticHeading;
[self updateCenterCoordinate];
}