Android - plotagem coordenada GPS no mapa personalizado

Eu tenho uma atividade no meu aplicativo onde há imagens que uso como mapas. Se a imagem estiver "alinhada à grade" no Google Maps, quando eu usar os cantos superior esquerdo e inferior direito do mapa que recebo do googlemaps on-line, posso transformar os usuários em um xey na tela. No entanto, se o mapa não estiver "alinhado à grade" e estiver em um ângulo do que os valores retornados pela matemática, a posição do usuário será desativada. Obviamente eu estou perdendo a parte sobre como lidar com o ângulo do mapa, então se alguém pudesse lançar alguma luz sobre como fazer isso, seria super útil.

Eu sei que teria que descobrir o ângulo em radianos e fazer alguma conversão, mas não tenho idéia de por onde começar. Isso é o que eu uso para obter um xey para plotar em uma tela até o momento.

public double[] getPositionGPS(Location upperLeft, Location lowerRight, Location current){

    try{

        double hypotenuse = upperLeft.distanceTo(current);
        double bearing = upperLeft.bearingTo(current);
        double currentDistanceY = Math.cos(bearing * Math.PI / OneEightyDeg) * hypotenuse;
        //                           "percentage to mark the position"
        double totalHypotenuse = upperLeft.distanceTo(lowerRight);
        double totalDistanceY = totalHypotenuse * Math.cos(upperLeft.bearingTo(lowerRight) * Math.PI / OneEightyDeg);
        double currentPixelY = currentDistanceY / totalDistanceY * ImageSizeH;

        double hypotenuse2 = upperLeft.distanceTo(current);
        double bearing2 = upperLeft.bearingTo(current);
        double currentDistanceX = Math.sin(bearing2 * Math.PI / OneEightyDeg) * hypotenuse2;
        //                           "percentage to mark the position"
        double totalHypotenuse2 = upperLeft.distanceTo(lowerRight);
        double totalDistanceX = totalHypotenuse2 * Math.sin(upperLeft.bearingTo(lowerRight) * Math.PI / OneEightyDeg);
        double currentPixelX = currentDistanceX / totalDistanceX * ImageSizeW;

        return new double[]{currentPixelX, currentPixelY};

    }catch(Exception e){

        e.printStackTrace();
        return new double[]{0,0};

    }

questionAnswers(5)

yourAnswerToTheQuestion