なぜスマホの方位が狂ったりするかご存知ですか?

もちろん磁気の影響とかもありますが

基本的にスマホは水平で使うことはなく
画面を見るためにある程度傾けているからなのです。

iPhoneのコンパスアプリを見てください
電子コンパスを正しく表示させるために
ジャイロセンサーによる水平・水準器も表示されます
正しく水平・水準を取ればコンパスが狂うことはありません。