2011-08-09 5 views
11

Trên iPhone, tôi nhận vị trí của người dùng theo độ thập phân, ví dụ: vĩ độ 39.470920 và kinh độ = -0.373192; Đó là điểm A.Tọa độ GPS theo độ để tính khoảng cách

tôi cần phải tạo ra một dòng với GPS khác phối hợp, cũng trong độ thập phân, điểm B. Sau đó, tính toán khoảng cách (vuông góc) giữa dòng từ A đến B và một điểm khác C.

Vấn đề là tôi bị lẫn lộn với các giá trị theo độ. Tôi muốn có kết quả tính bằng mét. Chuyển đổi cần thiết là gì? Công thức cuối cùng sẽ tính toán như thế nào?

+0

Tôi cũng có cùng một vấn đề và không một trong 2 câu trả lời ở đây hiện đang giải quyết vấn đề đó. Câu trả lời của RabinDev càng gần hơn, nhưng anh ta không giải quyết được vấn đề về mét chuyển đổi. Có lời khuyên nào không? –

Trả lời

1
  • (CLLocationDistance) distanceFromLocation: (const CLLocation *) vị trí là phương pháp để nhận khoảng cách từ CLLocation đến vị trí khác.

Vấn đề của bạn cũng là tìm đường ngắn nhất giữa đường (A, B) và điểm C. Tôi đoán nếu 3 CLLocations của bạn gần (cách nhau chưa đến vài km), bạn có thể thực hiện phép toán "như thể" tọa độ là các điểm trên một mặt phẳng và sử dụng this trong C++ hoặc this hoặc this và chỉ sử dụng các CLLocations "như thể" chúng là x và y tọa độ trên mặt phẳng.

Nếu tọa độ của bạn ở xa, hoặc độ chính xác chính xác là quan trọng thì hình dạng hình cầu của trái đất quan trọng, và bạn cần phải làm việc bằng cách sử dụng great circle distance và hình học khác trên mặt của hình cầu.

+0

hi rabindev bất kỳ ví dụ mẫu gửi nó xin vui lòng – Durga

+0

plus1 cho tham chiếu hình cầu siêu geeky. :-) – eric

28

Tại sao bạn không sử dụng phương thức CLLocation s distanceFromLocation:? Nó sẽ cho bạn biết khoảng cách chính xác giữa người nhận và một CLLocation khác.

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

Thật dễ dàng như vậy.

+0

hi Toastor Tính toán khoảng cách bất kỳ ví dụ mẫu nào gửi đi, vui lòng – Durga

+0

Xong. Những thứ như vậy rất dễ học từ thư viện tham khảo. Tôi đã đăng liên kết trong câu trả lời của tôi, bạn có thể muốn xem xét nó. – Toastor