我想计算用户使用 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 - Calculate distance between two points相反
关于iPhone:使用 GPS 计算步行距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684633/