Je travaille sur une "boussole" pour un appareil mobile. J'ai les points suivants:
point 1 (emplacement actuel): Latitude = 47.2246, Longitude = 8.8257
point 2 (emplacement cible): Latitude = 50.9246, Longitude = 10.2257
J'ai également les informations suivantes (de mon téléphone Android):
La direction de la boussole en degrés, qui pointe vers le nord.
Par exemple, lorsque je dirige mon téléphone vers le nord, j'obtiens 0°
Comment puis-je créer une flèche "type boussole" qui me montre la direction vers le point?
Y a-t-il un problème mathématique pour cela?
MODIFICATION : D'accord, j'ai trouvé une solution, cela ressemble à ceci :
/**
* Params: lat1, long1 => Latitude et Longitude du point actuel
* lat2, long2 => Latitude et Longitude du point cible
*
* headX => Valeur x de la boussole intégrée au téléphone
*
* Renvoie le degré d'une direction du point actuel au point cible
*
*/
function getDegrees(lat1, long1, lat2, long2, headX) {
var dLat = toRad(lat2-lat1);
var dLon = toRad(long2-long1);
lat1 = toRad(lat1);
lat2 = toRad(lat2);
var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1)*Math.sin(lat2) -
Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
var brng = toDeg(Math.atan2(y, x));
// Corriger les degrés négatifs
if(brng<0) {
brng=360-Math.abs(brng);
}
return brng - headX;
}