1

ユーザーの速度やその他のデータを表示するアプリケーションを開発しようとしています。

Core Location が検出できる最低速度を知りたいです。通りを移動しているときは、読み取り値は 0.00 です。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{
    //i display some other data here
    speedLbl.text =[NSString stringWithFormat:@"Speed: %f km/hr",([lastLocation speed]*3.6)];
}
4

3 に答える 3

4

プロパティを設定する必要がdistanceFilterありdesiredAccuracyます。

これはジャノのコードです

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.delegate = self;

/* Pinpoint our location with the following accuracy:
 *
 *     kCLLocationAccuracyBestForNavigation  highest + sensor data
 *     kCLLocationAccuracyBest               highest     
 *     kCLLocationAccuracyNearestTenMeters   10 meters   
 *     kCLLocationAccuracyHundredMeters      100 meters
 *     kCLLocationAccuracyKilometer          1000 meters 
 *     kCLLocationAccuracyThreeKilometers    3000 meters
 */
self.locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;

/* Notify changes when device has moved x meters.
 * Default value is kCLDistanceFilterNone: all movements are reported.
 */
self.locationManager.distanceFilter = 10.0f;

/* Notify heading changes when heading is > 5.
 * Default value is kCLHeadingFilterNone: all movements are reported.
 */
self.locationManager.headingFilter = 5;

// update location
if ([CLLocationManager locationServicesEnabled]){
    [self.locationManager startUpdatingLocation];
}

速度計算:

-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    double speed = newLocation.speed;

    //another way
    if(oldLocation != nil)
    {
        CLLocationDistance distanceChange = [newLocation getDistanceFrom:oldLocation];
        NSTimeInterval sinceLastUpdate = [newLocation.timestamp timeIntervalSinceDate:oldLocation.timestamp];
        speed = distanceChange/sinceLastUpdate;

    }   
}
于 2012-08-30T13:51:16.943 に答える
1

@Osama Khalifa、使用方法によって異なりますlocation manager

計算のためにspeed、私はあなたがsatellite GPS (stopUpdatingLocation) の代わりに ) を使用GPSするmobile network (startMonitoringSignificantLocationChanges)ことをお勧めしGPSます。accuracyspeed

また、より多くの値を取得するには、最も近い値に設定desiredAccuracyして値を設定する必要があります。distanceFilteraccurate

Note : more accurate results you ask consume more of iPhone battery power.
于 2012-08-30T13:49:53.273 に答える
0

制限はないと思います。あなたは自分で速度を計算する必要があります: distanceChange * timeSpan

distanceChange = [newLocation getDistanceFrom:oldLocation] timeSpan = time when retrieved new Location - time when retrieved old Location

このスレッドを見てください!

于 2012-08-30T13:53:41.290 に答える