Программирование компаса на iPhone - PullRequest
2 голосов
/ 12 января 2010

Я разрабатываю приложение для компаса для iPhone 3GS. Я использовал CoreLocation Framework для метод компаса, который я использовал ...

 - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading

... метод получения заголовка.

Мой вопрос заключается в том, как получить значение, например «315 ° северо-запад, 90 ° E, 140 ° SE», не перемещая iphone. У меня нет 3GS iphone, поэтому, если у кого-то есть идеи, пожалуйста, помогите.

Спасибо.

1 Ответ

1 голос
/ 10 февраля 2012

Я использую этот фрагмент непосредственно перед @implementation класса, где мне нужны поддельные данные о курсе и местоположении.

#if (TARGET_IPHONE_SIMULATOR)
@interface MyHeading : CLHeading
    -(CLLocationDirection) magneticHeading;
    -(CLLocationDirection) trueHeading;
@end

@implementation MyHeading
    -(CLLocationDirection) magneticHeading { return 90; }
    -(CLLocationDirection) trueHeading { return 91; }
@end

@implementation CLLocationManager (TemporaryLocationFix)
- (void)locationFix {
    CLLocation *location = [[CLLocation alloc] initWithLatitude:55.932 longitude:12.321];
    [[self delegate] locationManager:self didUpdateToLocation:location fromLocation:nil];

    id heading  = [[MyHeading alloc] init];
    [[self delegate] locationManager:self didUpdateHeading: heading];
}

-(void)startUpdatingHeading {
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}

- (void)startUpdatingLocation {
    [self performSelector:@selector(locationFix) withObject:nil afterDelay:0.1];
}
@end
#endif
...