1

Appleのドキュメントから:

@property(readonly, nonatomic) CMMagneticField magneticField

磁力計によって測定された磁場を返します。(読み取り専用)

このプロパティの値は、地球の地磁気にデバイス自体とその周囲から導入されたバイアスを加えたものに等しい、デバイスによって観測された総磁場です。

@property(readonly, nonatomic) CMCalibratedMagneticField magneticField

このプロパティによって返される CMCalibratedMagneticField は、デバイス バイアスなしで、デバイス付近の総磁場を示します。CMMagnetometer クラスの MagneticField プロパティとは異なり、これらの値は、地球の磁場に周囲の磁場を加えたものからデバイス バイアスを差し引いたものを反映します。

デバイスの北からの偏差を度で取得したい場合、2 つのうちどちらを使用する必要がありますか? つまり、デバイスが向いている場所に基づいて、iPhone のデジタル コンパスが表示する値です (例: 90、180、193 など)。

上記のどれも整数形式で度を返さないことを私は知っています。ドキュメントは、それらが正確に何を返すかについて明確ではありません..私はそれがMicroTeslasだと思います..

しかし、MicroTesla 値を返す場合、この値を度数を表す整数に変換するにはどうすればよいでしょうか? その MicroTesla 値に何らかの定数またはその性質のものを掛ける必要がありますか?

助けてくれてありがとう!

4

2 に答える 2

4

補足として、現在の位置の磁気偏角を取得したい場合は、真の方位から磁気方位を差し引くだけです。この数値は、磁気コンパス方位を真北方位に変換するのに役立ちます。

CLLocationDirection magneticDeclination = newHeading.trueHeading - newHeading.magneticHeading;
于 2012-09-08T13:40:08.603 に答える
1

headingから取得したデバイスを測定する必要がありますCLLocationManager。見出しの更新を開始する方法は次のとおりです (最初にコア Location フレームワークをインポートします) -

if([CLLocationManager headingAvailable]) //check if device has magnetometer
    [locationManager startUpdatingHeading];

この後、このデリゲートで更新を取得します-

- (void)locationManager:(CLLocationManager*)manager 
       didUpdateHeading:(CLHeading*)newHeading
{
    // If the accuracy is valid, process the event.
    if (newHeading.headingAccuracy > 0)
        CLLocationDirection theHeading = newHeading.magneticHeading;

    return;
}

soCLLocationDirectionは、真北に対する度数で測定される方向を表します。

方向の値は、真北から開始し、コンパスを中心に時計回りに度数で測定されます。したがって、北は 0 度、東は 90 度、南は 180 度などです。負の値は無効な方向を示します。

彼の助けを借りて...

更新:これらのリンクを確認してください - CLLocationManager と iPhoneおよびiPhone 3.0 の進行方向 コンパス: 進行方向を取得する方法? リンゴの参照

于 2012-07-06T14:57:23.860 に答える