2009-12-27 3 views
1

J'essaie de développer une application qui utilise le GPS et la boussole de l'iPhone afin de pointer une sorte de pointeur vers un emplacement spécifique (comme la boussole pointe toujours vers le Nord).
L'emplacement est fixe et j'ai toujours besoin du pointeur pour pointer vers cet emplacement spécifique, peu importe où se trouve l'utilisateur.
J'ai les coordonnées Lat/Long de cet emplacement mais je ne sais pas comment je peux pointer vers cet endroit en utilisant la boussole et le GPS ... toute aide sera appréciée.iPhone SDK Pointez vers un emplacement spécifique

Netanel

+0

Salut. Avez-vous pu résoudre cela? S'il vous plaît laissez-moi savoir si vous étiez. Merci. – Animesh

Répondre

1

Disons que vous avez la latitude et la longitude de votre point actuel et le point de destination. Appelons la destination "Q" et le point actuel "P".

D'abord, calculer les distances lat et LON (deltas) entre P et Q:

dx = q.lat - p.lat 
dy = q.lon - p.lon 

calculer ensuite l'angle que l'utilisateur a besoin de se déplacer pour atteindre Q de P. Ceci est juste triangle de base géométrie:

float angleRadians = atan2(dy,dx); 

Ensuite, nous voulons comparer cet angle à l'angle courant fourni par la boussole de l'iPhone. Vous voulez que l'en-tête de la flèche soit relatif à l'en-tête actuel de l'utilisateur, pour que l'application dise "Tournez 10º à gauche de votre cap actuel" plutôt que de dire "tournez à 56º du Nord". Cela peut être accompli comme ceci:

float relativeRadians = angleRadians - currentHeadingRadians 

Quelque chose comme ça devrait le faire! C'est un lourd code de psuedo, mais je pense que c'est l'idée de base. J'espère que cela pourra aider!

+0

Bien que cette solution ne tienne pas compte du fait que la Terre est un globe terrestre, c'est exactement ce dont j'avais besoin pour mon application sur de courtes distances. Bonne réponse. – Accatyyc

0

La réponse ci-dessus suppose une terre plate, qui fonctionne bien sur de petites distances, mais pourrait ne pas être acceptable pour les longues distances, comme si vous voulez faire une boussole de prière qui pointe vers la Mecque.

+0

c'est exactement ce que je veux mais dans mon cas à Mecque mais à Jérusalem :) avez-vous des pointeurs? – lnetanel

Questions connexes