[英]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.