Рассчитать противоположность текущего направления ходьбы 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, чтобы получить правильный угол, неверно.

Другие вопросы по тегам