2011-08-09 16 views
11

Na iPhonie uzyskuję położenie użytkownika w stopniach dziesiętnych, na przykład: szerokość geograficzna 39.470920 i długość geograficzna = -0.373192; To punkt A.Współrzędne GPS w stopniach do obliczania odległości

trzeba utworzyć linię z kolejnych współrzędnych GPS, również w stopniach po przecinku, punkt B. Następnie obliczyć odległość (prostopadle) pomiędzy linią z punktu A do punktu B i innego C

Problem polega na tym, że mylę się z wartościami w stopniach. Chciałbym uzyskać wynik w metrach. Jaka jest wymagana konwersja? Jak będzie wyglądała ostateczna formuła do obliczenia?

+0

Też mam ten sam problem, i żadna z 2 odpowiedzi tutaj obecnie nie rozwiąże tego. Odpowiedź RabinDeva zbliżyła się, ale nie rozwiązał problemu konwersji stopni na metry. Jakieś wskazówki? –

Odpowiedz

1
  • (CLLocationDistance) distanceFromLocation: (const CLLocation *) location to metoda uzyskiwania odległości od CLLocation do innej.

Twój problem jest również znalezienie najkrótszej linii pomiędzy linią (a, b) i pkt C myślę, że jeśli twoi 3 CLLocations są blisko (mniej niż kilka kilometrów od siebie), można zrobić matematyki "jak gdyby" współrzędne są punktami na jednej płaszczyźnie, i użyj this w C++ lub this lub this i po prostu użyj CLLocations "jakby" były współrzędnymi xiy w płaszczyźnie.

Jeśli twoje współrzędne są daleko, lub dokładna dokładność jest ważna, to kulisty kształt Ziemi ma znaczenie i musisz robić rzeczy przy użyciu great circle distance i innej geometrii na powierzchni kuli.

+0

hi rabindev dowolny przykładowy przykład wyślij go proszę – Durga

+0

plus1 dla super geeky odniesienia sferyczne. :-) – eric

28

Dlaczego nie używasz metody CLLocation s? Pokaże ci dokładną odległość między odbiornikiem a inną pozycją.

CLLocation *locationA = [[CLLocation alloc] initWithLatitude:12.123456 longitude:12.123456]; 
CLLocation *locationB = [[CLLocation alloc] initWithLatitude:21.654321 longitude:21.654321]; 

CLLocationDistance distanceInMeters = [locationA distanceFromLocation:locationB]; 

// CLLocation is aka double 

[locationA release]; 
[locationB release]; 

To takie proste.

+0

cześć Toastor Obliczenie odległości dowolny przykładowy przykład wyślij proszę – Durga

+0

Zrobione. Takie rzeczy są jednak łatwe do nauczenia się w bibliotece referencyjnej. Opublikowałem link w mojej odpowiedzi, możesz rzucić okiem na to. – Toastor

Powiązane problemy