Рассчитать противоположность текущего направления ходьбы Android 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 ответ
Решение
Ваша математика ошибочна. Если вы находитесь на 10 градусов, ваша противоположность 190. Ваша математика даст 170. Правильная математика:
direction = (bearing + 180) % 360;
По сути, ваше предположение о том, что вы можете умножить отрицательный угол на -1, чтобы получить правильный угол, неверно.