0

私は CoreLocation フレームワークを使用していますが、それが更新される頻度に興味があります。これは本当に不正確であり、NSTimer からメソッドを呼び出して使用頻度を増やすことについて議論しています。私のコードは以下です

ViewDidLoadで

//location update
CLController = [[CoreLocationController alloc] init];
CLController.delegate = self;
[CLController.locMgr startUpdatingLocation];

私のvoidメソッド

- (void)locationUpdate:(CLLocation *)location {

    int speedInt = [location speed]*2.23693629;
    if(speedInt < 0){
        speedInt = 0;
    }
    speedLabel.text = [NSString stringWithFormat:@"%d", speedInt];
}

- (void)locationError:(NSError *)error {
    speedLabel.text = [error description];
}
4

3 に答える 3

6

desiredAccuracy更新の頻度は、との組み合わせによって決まりますdistanceFilter(そして、明らかに、ユーザーの移動量)。distanceFilterofkCLDistanceFilterNonedesiredAccuracyof kCLLocationAccuracyBestorを使用するkCLLocationAccuracyBestForNavigationと、最も多くの更新プログラムを取得できます (ただし、バッテリーの消耗が最も早くなります)。

を使用してNSTimerも精度は向上しません。CLLocationManagerアプリの要件と、バッテリーを不必要に消耗させたくないというユーザーの希望との間の合理的なバランスにある程度の注意を払いながら、希望する頻度で更新することに依存してください。

Location Awareness Programming Guideの「 Starting the Standard Location Service 」セクションを参照してください。また、そのガイドの「バッテリー電力を節約するためのヒント」セクションも参照してください。

于 2013-06-16T14:14:47.510 に答える