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};
}