Я использую направление по компасу для поворота MKMapView. Вращение было немного резким, поэтому я м пытаюсь отфильтровать его, как это делают Карты Google на iphone (или, кажется, проделывает некоторую уловку).
Я пытаюсь отфильтровать показания компаса iphone, используя формулу скользящего среднего, но это не удается на кроссовере между 359 и n 0 потому что он начинает усреднять назад от 35x до 0 и заставляет карту вращаться назад по мере приближения к северу с запада.
Любые идеи, как лучше всего отфильтровать эти данные, чтобы они пересекались от 359 до нуля и поддерживать скользящее среднее.
Код здесь:
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
static float xd=0;
static float k = 0.22;
// Moving average formula
xd = k * xd + (1.0 - k) * newHeading.magneticHeading;
NSLog(@"%0.2f : %0.2f", newHeading.magneticHeading, xd);
[map setTransform:CGAffineTransformMakeRotation((-1 * xd * M_PI) /180)];}
Спасибо за любую помощь