2017-07-17 2 views
0

私はこの小さなコードスニペットをここに持っています。私が探しているのは、ユーザーの現在のGPS歩行方向(ベアリング)を取得し、反対方向の歩行方向を取得することです。現在のアンドロイドGPSウォーキング方向の反対側を計算してください

北東部と西部を歩いているときにコードがほとんど機能するように見えるが、私が南部を歩いているときは失敗するので、ここで重要な情報が欠落しているようだ。

スニペットの修正方法はありますか?

private static Location lastValidLocation; 

private float getOppositeGPSMovementDirection(Location lastLocation){ 

    float bearing; 
    if (!lastLocation.hasBearing){ 
     //Use bearing of the last Location with a valid bearing. 
     bearing = lastValidLocation.getBearing(); 
    }else{ 
     lastValidLocation = lastLocation; 
     bearing = lastLocation.getBearing(); 
    } 

    //Calculate backwards direction 
    int direction = (int) (bearing - 180); 
    direction = direction<0?direction*-1:direction; 

    return direction; 
} 

答えて

1

あなたの数学に問題があります。 、基本的に

direction = (bearing + 180) % 360; 

あなたは-1による負の角度が正しいを複数取得することができ、あなたの仮定を:あなたは10度であれば、あなたの反対は、190はあなたの数学が正しい数学がそれに170を与えるだろうです角度は間違っています。

+0

あなたはまったく正しいです! – Markus

関連する問題