[Xcode8]iOSで方角を取得する時のポイント

北には二種類の北がある
方位磁石の指す北を磁北と言い、地図上の北を真北と言う。この磁北と真北にはずれがあり、そのずれの角度を偏角と言う。偏角は年々微妙にずれていき、国土地理院の2010年調べの磁気偏角一覧によると、日本の場合は北海道で8から10度程度、沖縄で4から5度程度なので、北に行くほど偏角が大きい。
【補足】真北は詳しく言うと北極点の方向で、地球の自転軸の北端(北緯90度)の方位。
CoreLocationで取得するときの注意点
iOSではCoreLocation Frameworkを使用することで方角を得ることが出来る。また、用途に応じて上記の磁北と真北、いずれを基準にした方角も取得可能。ただし、磁北基準の場合は位置情報サービスがオンになっていれば取得できるが、真北基準の場合は以下のイベントでずっと-1しか返ってこない場合がある。
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {
    NSLog(@"磁北基準 %f", newHeading.magneticHeading);
    NSLog(@"真北基準 %f", newHeading.trueHeading);
}
真北基準の方角を取得するときの設定
以下の設定を行うと、真北を基準とした方角が取得できるようになる。デバイス側の設定なので、ユーザーに設定を促すようなメッセージなどを表示する必要がある。 compass1
設定画面から"プライバシー"を選択
compass2
"位置情報サービス"を選択
compass3
一番下にある"システムサービス"を選択
compass4
この画面で"コンパスの調整"をオンにする