繁体   English   中英

CLLocationManager或GoogleMap-IOS跟踪用户行驶的距离

[英]Track distance travelled by user by CLLocationManager or GoogleMap-IOS

我正在使用GoogleMap-IOS-1.8.1 SDK来显示地图。 我必须计算用户走过的步行距离。 搜索后,我将尝试使用CLLocationManager的方法-

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

double new_travelled_distance = [newLocation distanceFromLocation:oldLocation];
total_distanceTravelled_by_user += new_travelled_distance;  }

然后像这样初始化

-(void)viewDidLoad{

[super viewDidLoad];

if(!locationManager)
{
    locationManager = [[CLLocationManager alloc] init];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest];
    [locationManager setDelegate:self];
    [locationManager setDistanceFilter:5.0f];         // measured in meters
    [locationManager setHeadingFilter:kCLHeadingFilterNone];            // measured in degrees
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBestForNavigation];
}
[locationManager startUpdatingLocation];   }

但这并不能提供准确的数据,即使我坐在同一地方也没有走过一个仪表,但它可以让我定期更新以更改位置。 我是否必须更正“ CLLocationManager的distanceFilter ”属性,或者我该怎么做才能更准确地计算行驶距离...?

这是因为您将所需的精度设置为kCLLocationAccuracyBestForNavigation 只需删除该行。 此外,航向的默认值设置为1,这非常准确。 不要将其设置为kCLHeadingFilterNone

这样可以防止定期更新,并且只有在您移动5米时才会得到它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM