具有负速度的Xamarin iOS位置

具有负速度的Xamarin iOS位置,xamarin,xamarin.ios,cllocationmanager,Xamarin,Xamarin.ios,Cllocationmanager,我从location对象获得的速度值始终为负-1。来自苹果博客 A negative value indicates an invalid speed. 我的代码是 CLLocationManager iPhoneLocationManager = new CLLocationManager (); iPhoneLocationManager.RequestAlwaysAuthorization (); iPhoneLocationManager.PausesLocationUpdatesA

我从location对象获得的速度值始终为负-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 ();
}
即使它给出了正确的位置,速度始终为负值

速度

这反映了设备在系统中的瞬时速度 当前航向的方向。负值表示错误 无效速度。因为实际速度在两个时间段之间可能会发生多次变化 在交付后续位置事件时,应使用此 属性仅供参考

除非您一直以相当恒定的速率直接从最后一个采样点移动,即基于线性矢量的计算,而不是在一个紧密的圆圈中运行,否则瞬时速度有些毫无价值。现在骑自行车和以恒定速度开车,瞬时速度是相当有效的

大多数实时移动地图系统使用某种类型的速度采样算法;i、 e.使用移动平均计算除以采样时间间隔,在X个样本上移动的距离是获得“当前”速度的一种方法

每个应用程序都有不同的用例,因此需要调整您的算法,例如,如果您有一个徒步旅行应用程序,并向用户显示其在小道上的平均速度以及完成小道所需的时间,那么该应用程序将采用与公共交通应用程序不同的算法,该应用程序根据当前的巴士速度计算您的到达时间,但要考虑交通状况、一天中的时间、乘客停靠站、红灯、,等等

一篇博客文章展示了一种简单的obj-c采样技术,但很容易将他的想法翻译成c: