计算当前android GPS行走方向的相反方向
Calculate the opposite of the current android GPS walking direction
我这里有这个小代码片段。我要找的是获取用户当前的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;
}
你的数学有问题。如果你在 10 度,你的对面是 190。你的数学会给出 170。正确的数学是:
direction = (bearing + 180) % 360;
基本上,您认为可以将负角乘以 -1 以获得正确角度的假设是错误的。
我这里有这个小代码片段。我要找的是获取用户当前的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;
}
你的数学有问题。如果你在 10 度,你的对面是 190。你的数学会给出 170。正确的数学是:
direction = (bearing + 180) % 360;
基本上,您认为可以将负角乘以 -1 以获得正确角度的假设是错误的。