我正在使用apple的核心位置框架。
我需要知道CLLocationDirection
(GPS的路线)是否是确定移动车辆是向左还是向右转或直行的方式?如果是这样,怎么样?
如果没有,框架的另一个特征是否更适合识别转弯?
感谢任何形式的帮助。
答案 0 :(得分:0)
正如我在评论中所说CLLocationDirection
如果你长期使用它可以为此工作。
那说,这不是没有问题。 newHeading - oldHeading
对于右转是正的而对左转是负的,但只有当两个标题在北方的两边都没有找到它们时才是。
从355到5应该给出+ 10Deg(右转)。所以你有一个需要解决的角落案例。
你必须做的基本假设是转弯发生在较小的角度。如果数据收集率合理并且汽车没有在悬崖上翻滚,那将是真实的。如果我怀疑乘客会关心GPS是否会混淆。
objective-c可能有更优雅的方式来计算这个,但我的java污染的大脑看到它是:
// Some test data
// deltaH newH oldH expected
// -350 = 5 - 355 should return +10
// -355 = 0 - 355 should return +5
// 5 = 5 - 0 should return +5
// -10 = 5 - 15 should return -10
// 10 = 15 - 5 should return 10
// -181 = 0 - 181 should return 179
// 181 = 181 - 0 should return -179
//
int deltaH = newH - oldH;
//Ensure deltaH takes the shortest path from oldH to newH
if ( -180 < deltaH && deltaH < 180 ) {
return deltaH;
} else if (deltaH <= -180) {
return deltaH + 360;
} else if (deltaH >= 180) {
return deltaH - 360;
} else {
throw new AssertionError("Logic error");
}
我确信有一种方法可以将其转化为objective-c。
另一个问题是精确损失。如果CLLocationDirection是从更原始的数据源计算的,比如GPS位置数据,则很可能无论计算CLLocationDirection是否有损。意味着应该可以通过返回原始数据并从中计算转弯方向来获得更准确的结果。计算导数时,这些东西变得很重要。