计算当前Android GPS行走方向的相反方向

时间:2017-07-17 09:22:00

标签: android gps location bearing

我在这里有这个小代码片段。我正在寻找的是获得用户当前的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 个答案:

答案 0 :(得分:1)

你的数学错误。如果你是10度,你的对立面是190.你的数学会给它170.正确的数学是:

direction = (bearing + 180) % 360;

基本上,您假设可以将负角度乘以-1以获得正确的角度是错误的。