2017-07-17 58 views
0

我在这里有这个小代码片段。我正在寻找的是获取用户的当前GPS行走方向(方位),然后获得相反的行走方向。计算当前的android 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

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

direction = (bearing + 180) % 360; 

基本上,你的前提是,你可以通过多种-1负角度以获得正确的角度是错误的。

+0

你是完全正确的! – Markus