我希望使用GPS来计算用户步行时覆盖的距离。例如,用户点击开始按钮后开始行走或奔跑,然后完成时点击停止。为了得到不同的经纬度,用户必须行走的最小距离是多少?
我们如何在iPhone上实现这个功能?假设我们每0.3秒记录一次经纬度,然后最后得到一个点列表?
我希望使用GPS来计算用户步行时覆盖的距离。例如,用户点击开始按钮后开始行走或奔跑,然后完成时点击停止。为了得到不同的经纬度,用户必须行走的最小距离是多少?
我们如何在iPhone上实现这个功能?假设我们每0.3秒记录一次经纬度,然后最后得到一个点列表?
-(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-计算两点之间的距离