3

明確にするために、私の問題は、横向きの右または左の見出しの値を読み取っていないことです。私はロケーションマネージャーを使用しており、90°を差し引いて、横向きの右の見出し値と270°の横向きの左向きの値を読み取ります。デフォルトでは、デバイスは常に縦向きモードと見なされるため、この調整を行う必要があります。

私は最近、ロケーションベースの拡張現実アプリを開発しましたが、私が経験しているのは、風景の右と左の間の見出しの値に常にオフセットがあるということです。「フィールドで」テストしたところ、オフセットは約 12° でした。

私はこのアプリをできるだけ正確にしたいと考えています。つまり、ここではセンサー データに依存しており、これが最初のリリースであるため、10° 未満は許容されます (最悪の場合は 15° でさえ)。しかし、既存の誤差に 12° のオフセットを加えると、かなり厄介です。

誰もこれについて説明がありますか?今すぐ直せなくても持っていたいです。だから今、私はこれを「修正」しようとしています。左の横向きに 12° を追加するか、右向きの横向きに 12° を差し引く必要があります。

この問題に関する経験はありますか?

4

2 に答える 2

11

私の経験では、特に横向きのビューでは、コンパスはあまり良くありません。別のデバイスでは違いがある可能性があるため、1 つのビューで 12° を差し引くことはしません。続行する前に、他の 1 つまたは 2 つの iPhone でテストすることをお勧めします。

また、LocationManager のビューを設定していますか?

CLLocationManager *compassManager;
compassManager.headingOrientation =CLDeviceOrientationLandscapeLeft;
于 2012-11-13T11:26:25.860 に答える
5

私もこの問題に遭遇しました.LandscapeLeft、landscapeRight、Portraitには違いがあります。Sten の返信と以下の Swift コードのおかげで、問題が修正されました。

override func willRotateToInterfaceOrientation(toInterfaceOrientation: UIInterfaceOrientation, duration: NSTimeInterval) {
    var text=""
    switch UIDevice.currentDevice().orientation{
    case .Portrait:
        text="Portrait"
        locationManager.headingOrientation = CLDeviceOrientation.Portrait
    case .PortraitUpsideDown:
        text="PortraitUpsideDown"
        locationManager.headingOrientation = CLDeviceOrientation.Portrait
    case .LandscapeLeft:
        text="LandscapeLeft"
        locationManager.headingOrientation = CLDeviceOrientation.LandscapeLeft
    case .LandscapeRight:
        text="LandscapeRight"
        locationManager.headingOrientation = CLDeviceOrientation.LandscapeRight
    default:
        text="Another"
    }
    NSLog("You have moved: \(text)")
}
于 2016-02-07T06:52:37.010 に答える