2016-09-30 53 views
2

我正在离线应用程序,我必须显示用户旅行的路径,我正在使用MKMapview。每当我从didUpdateLocations方法获得CLLocation坐标时,它都显示出令人满意的结果bcoz如果用户位置在路上,那么它显示了一些远处的位置,假设建筑物位置,并且绘制完整的用户旅行路径,那么该路径将交叉这么多建筑物,但用户已经在公路上行驶,而不是在建筑物上。那么有什么方法可以纠正这个位置坐标(不使用互联网),以便它能够显示确切的位置。CLLocation不显示准确结果


如果没有办法做到这一点,那么其他的出租车应用程序如何显示驾驶员当前的道路位置。我不想为此使用Google Map。

+0

你使用kCLLocationAccuracyBest? – Rob

+0

是的, locationManager.desiredAccuracy = kCLLocationAccuracyBest; –

+0

然后你可以尝试kCLLocationAccuracyBestForNavigation ..或者你可以阅读这个答案:http://stackoverflow.com/a/1197775/3108877 – Rob

回答

0

位置管理器将返回多个位置。您可以添加一些代码来检查返回的位置是否足够适合您。这里是一个例子:

-(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations 
{ 
    if([locations lastObject].horizontalAccuracy <= (some number)) 
     [locationManager stopUpdatingLocation]; 
} 
+0

我已经在我的应用程序中使用此代码 if(newLocation.horizo​​ntalAccuracy <= 0) { return; } 我也在使用位置年龄验证。 NSTimeInterval locationAge = - [newLocation.timestamp timeIntervalSinceNow]; 如果(locationAge> 6.0){ 返回 ; } –