0

私のアプリでは、2 つの場所の間の距離を取得しようとしています。アプリのボタンを押して (大きな) 部屋を横切ると、CLLocationDistance が 0.000000 として返されました。

.h ファイル:

@property (strong, nonatomic) IBOutlet UIImageView *stopButton;
@property (strong, nonatomic) CLLocationManager *locationManager;
@property (strong, nonatomic) CLLocation *firstLocation;
@property (strong, nonatomic) CLLocation *secondLocation;
@property (strong, nonatomic) IBOutlet UILabel *locationLabel;

.m ファイル:

- (void)viewDidLoad {
    [super viewDidLoad];
     self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.distanceFilter = kCLDistanceFilterNone;
    self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    [self.locationManager startUpdatingLocation];
    self.firstLocation = [self deviceLocation];
}

- myButtonFunction {
    self.secondLocation = [self deviceLocation];
    self.locationLabel.text = [[NSString alloc] initWithFormat:@"%f", [self.firstLocation distanceFromLocation:self.secondLocation]];
}

- (CLLocation *)deviceLocation {
    return [[CLLocation alloc] initWithLatitude:self.locationManager.location.coordinate.latitude longitude:self.locationManager.location.coordinate.longitude];
}
4

2 に答える 2

0

デバイスの場所を使用すると、実際に何が記録されているかを制御できなくなります。たとえば、デバイスの位置は、位置が 20 メートル以上変化しない限り更新されないという条件を持つ可能性があります... または、おそらく 1 時間に 1 回更新されます。あなたは知る方法がありません。

Josh が言っていたように、CLLocationManagerDelegateコールバックから場所を取得する必要があります。それらをクラスに保存し、ボタンが押されたときに最後に保存した場所を記録します。そうして初めて、指定した場所の設定に関連するデータを取得できます。

于 2013-07-13T04:04:33.493 に答える