2

次のコードスニペットのアルファ値は、デバイスの回転に応じて0から360の間で変化する必要があります。

window.addEventListener('deviceorientation', function(eventData) {
    var LR = eventData.gamma;
    var FB = eventData.beta;
    var DIR = eventData.alpha;

    deviceOrientationHandler(LR, FB, DIR);
});

この変動は、それが向いている風向に依存するはずです。これを達成するために、デバイスは磁力計/コンパスを利用します。

これをiPad3でテストしたところ、次の問題が発生しました。

0から360まで変化しますが、相対的な方法です。ページはロードされると0を示し、その後0から360の間で変化します。しかし、デバイスが回転してページが更新されると、再び0が表示され、これらの値の間で変化します。

それは風向に従うべきであり、私は北がどこにあるかを見つけようとしているので、相対的な方法ではなく絶対的な方法でこれを行う必要があります。AKA:ページが読み込まれるときにデバイスがいつ、どの方向を向いているかに関係なく、どこかを向いているときは常に同じ値を表示します。

これらのソースは、APIがこれに対応できる必要があることを示しています。

html5rocks

そしてこれ:

W3C

そして、これが北を向いているときに「方向」が0である(または少なくとも一貫した値を返す)必要がある例です。

html5rocksページには例が含まれています(ctrl + fおよび「試してみてください」)。2つ以上のURLを投稿することはできません

これは、デバイスが向いている風向を示す正しい方法ですか?これをGoogleMapsApiと組み合わせて使用​​する必要があります。

そして最後に、私はIpad 3用のコンパスアプリがあることを知っているので、デバイスはこれを行うことができるはずです。

私は混乱しています :)

4

3 に答える 3

4

W3Cによると:

3つの角度の絶対値を提供できない実装では、代わりに、任意の方向に関連する値を提供する場合があります。これは、依然として有用である可能性があるためです。この場合、絶対プロパティをfalseに設定する必要があります。それ以外の場合は、絶対プロパティをtrueに設定する必要があります。

于 2014-03-08T07:34:38.400 に答える
2

これは古い質問ですが、ここ数年のいくつかの変更(ブラウザーの更新)のために、同じ問題が発生しました。これを解決するには2つの方法があります。

デバイスの向きの絶対

https://developers.google.com/web/updates/2016/03/device-orientation-changes

(AndroidのOpera、Chrome、Maxthonで動作します)

キャリブレーションを使用したデバイスの向き

コンパスを確認してください-北はデバイスの動きまたはHTML5のwatchLocationの動きを使用しています

于 2016-12-12T23:05:49.680 に答える
1

Mobile Safari(iOS)では、アルファは、デバイスの向きが最初に要求されたときにデバイスが指していた方向に基づいています。したがって、iPadが東を表示しているときにデバイス方向リスナーをアクティブにすると、東ではアルファが0になります。正しいコンパスの方向を取得するには、iOSでwebkitパラメーターwebkitCompassHeadingを使用する必要があります。他のすべてのブラウザは、コンパスの方向としてアルファを受け入れます。それらすべてをサポートするには:

var compassdir;
if(eventData.webkitCompassHeading) {
  compassdir = eventData.webkitCompassHeading;
}
else compassdir = eventData.alpha;
于 2014-12-06T12:15:57.127 に答える