我想计算用户在使用GPS行走时所覆盖的距离。例如,用户点击开始按钮并开始步行或跑步,而不是当他完成时他点击停止。为了获得不同的纬度,用户必须经过的最小距离是多少?
我们如何才能在IPhone中做到这一点,因为我们采用Lat,每隔0.3秒就比上一次我们有一个点列表?
答案 0 :(得分:3)
你可以通过计算2点(纬度,经度)之间的距离来做到这一点:
(我还没有测试过):
-(double)distanceBetweenCoordinate:(CLLocationCoordinate2D)c1 andCoordinate:(CLLocationCoordinate2D)c2 {
double long1 = degreesToRadians(c1.longitude);
double lat1 = degreesToRadians(90 - c1.latitude);
double long2 = degreesToRadians(c2.longitude);
double lat2 = degreesToRadians(90 - c2.latitude);
double gamma = fabs(long1 - long2);
if (gamma > M_PI) {
gamma = 2 * M_PI - gamma;
}
double result = cos(lat2) * cos(lat1) + sin(lat2) * sin(lat1) * cos(gamma);
return acos(result) * 6366.1977; // Kilometers
};
CGFloat degreesToRadians(CGFloat degrees) {
return degrees * M_PI / 180;
};
更新:改为使用distanceFromLocation - Calculate distance between two points