1

私の didUpdateHeading コードは以下のとおりです。

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading
{
    if (newHeading.headingAccuracy < 0)
    {
        _realHeading = -9999;

        NSLog(@"heading accuracy < 0");

        return;
    }


    // Use the true heading if it is valid.
    [self.locationManager dismissHeadingCalibrationDisplay];

    _newHeading = Retain(newHeading);


    if (self.useMagneticHeading == YES)
        _realHeading = _newHeading.magneticHeading;
    else
        _realHeading = _newHeading.trueHeading;


    // Adjust for device rotation.
    UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;

    switch (orientation)
    {
        case UIDeviceOrientationPortraitUpsideDown:
            _realHeading = _realHeading + 180.0f;
            break;
        case UIDeviceOrientationLandscapeLeft:
            _realHeading = _realHeading + 90.0f;
            break;
        case UIDeviceOrientationLandscapeRight:
            _realHeading = _realHeading + 270.0f;
            break;
        default:
            break;
    }
    while (_realHeading > 360.0f)
        _realHeading = _realHeading - 360;



}

できます。

しかし、それはびくびくしています。センサーが揺れてかなり揺れます。

内蔵の iPhone コンパスの安定性と精度をどうにかして改善した人はいますか?

おそらく他のセンサー(アクセル?、ジャイロ?)を使って。それとも、何らかのソフトウェアアルゴリズムですか?

4

0 に答える 0