Рассчитать противоположное текущему направлению ходьбы 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;
}

person Markus    schedule 17.07.2017    source источник


Ответы (1)


Ваша математика ошибочна. Если вы на 10 градусов, ваша противоположность равна 190. Ваша математика дает 170. Правильная математика такова:

direction = (bearing + 180) % 360;

По сути, ваше предположение о том, что вы можете умножить отрицательный угол на -1, чтобы получить правильный угол, неверно.

person Gabe Sechan    schedule 17.07.2017