0

私は1つのアプリケーションを実行しています。その中でCLLOcationmanager、以下のようなものを使用しています。

[self performSelectorOnMainThread:@selector(findlocation:) withObject:nil waitUntilDone:NO];

-(void)findlocation:(id)sender
{
//NSAutoreleasePool *pool=[[NSAutoreleasePool alloc]init];
locationManager=[[CLLocationManager alloc]init];
locationManager.delegate=self;
locationManager.distanceFilter=0.3f;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
[locationManager startUpdatingLocation];

}

   - (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
       fromLocation:(CLLocation *)oldLocation
{
    NSLog@"%@",newlocation.timestamp];
}

0.3 メートルごとに位置を更新したいのですが、このデリゲート メソッドはその距離に対して起動されません。そして[self performSelectorOnMainThread:@selector(findlocation:) withObject:nil waitUntilDone:NO];、残りのプロセスが機能した後。

4

1 に答える 1

0

これはあなたを助けるかもしれないと思います。経度と緯度を使用して距離を調整する必要があります

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
           fromLocation:(CLLocation *)oldLocation {
    MKCoordinateRegion region = { { 0.0f, 0.0f }, { 0.0f, 0.0f } };
    region.center = newLocation.coordinate;
    region.span.longitudeDelta = 0.15f; 
    region.span.latitudeDelta = 0.15f;
    [self.mapView setRegion:region animated:YES];
}

上記のコードは 0.15 度 (0.15*111 Km) を使用しています。

または、「distanceFilter」を使用してみてください。distanceFilter を使用すると、そのような無関係な動きを除外できます。

于 2012-12-21T10:50:42.850 に答える