我这里有一小段代码。我要找的是得到用户当前的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;
}发布于 2017-07-18 04:33:36
你的数学有误。如果你在10度,你的对立面是190度。你的数学结果是170。正确的数学方法是:
direction = (bearing + 180) % 360;基本上,你的假设是可以将负角度乘以-1以获得正确的角度,这是错误的。
https://stackoverflow.com/questions/45140372
复制相似问题