我从位置对象获得的速度值始终为负(-1)。来自苹果博客
A negative value indicates an invalid speed.
我的代码是
CLLocationManager iPhoneLocationManager = new CLLocationManager ();
iPhoneLocationManager.RequestAlwaysAuthorization ();
iPhoneLocationManager.PausesLocationUpdatesAutomatically = false;
iPhoneLocationManager.DesiredAccuracy = 100;
iPhoneLocationManager.DistanceFilter = 5;
if (CLLocationManager.LocationServicesEnabled) {
iPhoneLocationManager.StartUpdatingLocation ();
}
即使它给出正确的位置,速度也总是负的。
答案 0 :(得分:0)
速度
此value反映了设备的瞬时速度 当前航向的方向。负值表示 速度无效。 因为实际速度之间可能会发生很多变化 后续位置事件的交付,你应该使用它 该物业仅供参考。
除非你经常以一个相当恒定的速度直接从最后一个采样点移动,即基于线性矢量的计算而不是在一个紧密的圆周中运行,否则瞬时速度有点毫无价值。现在骑自行车并以恒定速度驾驶汽车,瞬时速度可以相当有效......
大多数real-time
移动地图系统使用某种类型的速度采样算法;即使用移动平均值计算除以采样时间间隔在X个样本上移动的距离是获得“当前”速度的一种方法。
每个应用程序都有不同的用例,因此您的算法需要进行调整,就像您有远足应用程序并向用户展示他的平均值一样。在路径上的速度以及完成路径所需的时间将与公共交通应用程序具有不同的算法,该应用程序根据当前的公交车速度计算您的到达时间,但考虑交通状况,时间,乘客站点,红色灯等...
博客文章显示了一种简单的抽样技术(在obj-c中,但很容易将他的想法转换为c#):http://www.perspecdev.com/blog/2012/02/22/using-corelocation-on-ios-to-track-a-users-distance-and-speed/