Я использую направление компаса для поворота MKMapView.Поворот был немного прерывистым, поэтому я пытаюсь отфильтровать его, как это делает Google Maps на iphone (или, кажется, делает какую-то хитрость).
Я пытаюсь отфильтровать показания с компаса iphone, используяформула скользящего среднего, но она не работает на пересечении между 359 и 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)];}
Спасибо за любую помощь