簡體   English   中英

行駛距離值不正確

[英]Inaccurate distance travelled values

使用corelocation框架的新手可以幫助理解為什么我的代碼無法正常工作。 我希望它跟蹤行進的距離,但是當視圖啟動時,它每次都會執行不同的操作。 有時,它會跳到1000或另一個較大的值,或者會以隨機增量增加。 誰能看到為什么此代碼對我不起作用?

    - (void)viewDidLoad
{
    locationManager = [[CLLocationManager alloc] init];
    locationManager.desiredAccuracy = kCLLocationAccuracyBest;
    locationManager.delegate = self;
    locationManager.distanceFilter = 100; //update every 100 meters
    [locationManager startUpdatingLocation];
    startLocation = nil;

    [super viewDidLoad];
    // Do any additional setup after loading the view.
}
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    if (startLocation == nil)
    {
        totalDistanceBetween = 0;
        self.startLocation = newLocation;
    }
    CLLocationDistance distanceBetween = [newLocation distanceFromLocation:startLocation ];
    startLocation = newLocation;
    totalDistanceBetween += distanceBetween;
    totalDistanceBetween = totalDistanceBetween * 0.001; //convert to m value to km
    NSString *tripString = [[NSString alloc]
                            initWithFormat:@"%.02f",
                            totalDistanceBetween];
    distance.text = tripString;
}

讓我startLocation的第一件事是,您告訴位置管理器開始提供更新 ,將startLocation設置為nil

根據startLocation的定義/初始化/重用方式,它可能不包含您期望的初始值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM