iphone gps提供错误的位置

时间:2011-07-06 04:37:20

标签: iphone objective-c gps mapkit

我想用iphone gps功能显示用户的当前位置,但问题是它提供了错误的位置。        当我在地图上放置引脚然后它将引脚放在准确的位置但是当我试图在文本中看到位置时它会给出不准确的位置,大约500到800米的不准确度。我使用了反向地理编码和google api但是所有给出相同的位置。请告诉我为什么会这样,我怎样才能显示用户的确切位置? 我的代码是:

cllocationmanager *locationManager = [[CLLocationManager alloc] init];
        locationManager.delegate = self;
        locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move
        locationManager.desiredAccuracy = kCLLocationAccuracyBest; // 100 m
        [locationManager startUpdatingLocation];


    }

    }



- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation

{


 CLLocationCoordinate2D here =  newLocation.coordinate;
    NSLog(@"%f  %f ", here.latitude, here.longitude);


    MKReverseGeocoder *geocoder = [[MKReverseGeocoder alloc] initWithCoordinate:here];
    [geocoder setDelegate:self];
    [geocoder start];

        }



- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFailWithError:(NSError *)error{



}



- (void)reverseGeocoder:(MKReverseGeocoder *)geocoder didFindPlacemark:(MKPlacemark *)placemark
{
    NSLog(@"The geocoder has returned: %@", [placemark addressDictionary]);



    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:[NSString stringWithFormat:@"%@",[placemark addressDictionary]] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
    [alertView release];


}

1 个答案:

答案 0 :(得分:2)

快速猜测:你检查了CLLocation的水平精度吗?我得到的第一个响应通常是非常不准确,然后随后的调用会变得更好。

编辑:@pankaj首先,您能否确认这是一个准确性问题。如果这是我建议的问题,那么CLLocation horizo​​ntalAccuracy会很大。如果不是这样,那么你可以忽略我的答案和这些评论。但是,如果horizo​​ntalAccuracy是一个很大的错误,那么你将不得不等待更好的锁定。有两种方法可以做到这一点:

  1. 等待一段时间(一两秒钟),看看你是否能获得更好的锁定。
  2. 更早开始请求位置,例如当应用程序启动时,或者需要位置的UIViewController启动时。