3

を使用する際に問題に直面してCLLocationManagerいます。

startUpdatingLocationメソッドとそのデリゲートメソッドを使用しています

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading

私は取得してnewHeading.trueHeadingいます。

問題は、-1 を返す場合があり、newHeading.trueHeadingデバイスが -1 を返し始めると、同じままで、常に -1 を返すことを意味します。

この問題の技術的な詳細とそれを修正するための回避策を教えてください。

Appleのドキュメントを調べているときに見つけた

"A negative value means that the reported heading is invalid, which can occur when the device is uncalibrated or there is strong interference from local magnetic fields."

しかし、回避方法や回避策についての情報はありません。

注:このアプリは、iPhone 4、iPhone 4S、iPad 2、および iPad 3 の実機でテストしています。

4

3 に答える 3

2

.magneticHeading に有効な見出し (0 ~ 360) があるが、.trueheading に無効な値 (-1) がある場合、これは通常、ユーザーが次の設定をオフにしたことを意味します。

プライバシー / 位置情報 / システム サービス / コンパス キャリブレーション

ここに画像の説明を入力

これをオンに戻すと、問題が解決します。

また、Apple のコンパス アプリの [設定] をチェックして、[真北を使用] 設定が有効になっているかどうかを確認することもできます。コンパスのキャリブレーション設定が無効になっている場合、この設定も無効になります。

ここに画像の説明を入力

悲しいかな、Apple はこれをテストする手段を提供していませんが、磁方位が利用可能で真の方位が利用できないことを観察し、ユーザーがコンパスのキャリブレーション設定を無効にしたためであると想定する以外に方法はありません。

于 2020-01-03T19:06:25.687 に答える
1

しかし、回避方法や回避策についての情報はありません。

その場合iOS、このダイアログを抑制しないと、キャリブレーション ダイアログが表示されます。方位は、ユーザーが 8 の字の動きをしてデバイスを調整すると有効になります。

車内のように永久的な強力な磁場があるためにこれが機能しない場合、磁針路を取得する機会はまったくありません。

その場合、GPS によって測定された、ユーザーが移動する方向を提供するロケーション マネージャーの location.course の使用を検討できます。

于 2013-04-23T06:59:53.463 に答える
0

プロパティを使用して、X、Y、および Z 軸に沿って生の磁気値を取得できますCLHeading。これらの値はマイクロテスラで測定され、Apple が示す-128 ~ 128の範囲に正規化されます。各軸の値は、デバイスの内蔵磁力計によって追跡される磁力線からのオフセットを表します。

詳細については、このリンクを参照してください

これがお役に立てば幸いです...

于 2013-04-23T06:13:48.047 に答える