Я пытаюсь запрограммировать приложение с дополненной реальностью для 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];
}