2012-02-09 23 views
6

Tôi đang cố gắng đo khoảng cách giữa hai điểm (kinh độ, vĩ độ). Vấn đề của tôi là tôi nhận được kết quả khác nhau trên iOS sau đó trên Android.Khoảng cách khác nhau giữa hai điểm trên iOS và Android

Tôi đã kiểm tra nó với số này site và kết quả là các giá trị Android là chính xác.

Tôi đang sử dụng phương pháp MapKit này để có được những khoảng cách trong iOS: distanceFromLocation:

Dưới đây là vị trí của tôi kiểm tra:

P1: 48,643798, 9,453735 P2: 49,495150, 9,782150

Khoảng cách iOS: 97717 m Khoảng cách Android: 97673 m

Làm thế nào điều này có thể và làm thế nào tôi có thể sửa lỗi này?

+1

Thực ra cả hai đều sử dụng cùng một dữ liệu: Xem câu trả lời của tôi bên dưới. – lnafziger

Trả lời

8

Vì vậy, tôi đã gặp một vấn đề khác nhau và stumbled khi câu trả lời cho cả hai câu hỏi của chúng tôi:

Trên iOS, bạn có thể làm như sau:

meters1 = [P1 distanceFromLocation:P2] 
// meters1 is 97,717 

meters2 = [P2 distanceFromLocation:P1] 
// meters2 is 97,630 

tôi đã tìm kiếm và đã tìm kiếm nhưng thiên đường' t có thể tìm ra lý do cho sự khác biệt. Vì chúng là cùng một điểm chính xác, nên hiển thị cùng một khoảng cách bất kể bạn đang di chuyển theo cách nào. Tôi đã gửi nó cho Apple như một lỗi và họ đóng nó như là một bản sao nhưng vẫn không cố định nó. Tôi sẽ đề nghị với bất cứ ai muốn điều này được cố định để cũng gửi nó như là một lỗi.

Trong khi đó, tỷ lệ trung bình của hai thực sự là giá trị đúng:

meters = (meters1 + meters2)/2 
// meters (the average of the first two) is 97,673 

Rõ ràng Android không có vấn đề này.

+0

Phép thuật của toán học. Điều đó sẽ giúp tôi bình tĩnh khách hàng. Có bất kỳ lời giải thích cho điều này hoặc là điều này được thực hiện để tính toán khoảng cách trung bình giữa hai giá trị này? – MoFuRo

+2

Tôi đã tìm kiếm và tìm kiếm nhưng chưa tìm được lý do cho sự khác biệt. Vì chúng là cùng một điểm chính xác, nên hiển thị cùng một khoảng cách bất kể bạn đang di chuyển theo cách nào. Tôi đã gửi cho Apple một lỗi và đang chờ phản hồi. – lnafziger

+0

Thực hiện tốt, hy vọng họ sửa lỗi này. – MoFuRo

3

Kinh độ và vĩ độ không phải là tất cả những gì bạn cần. Bạn phải sử dụng cùng một mô hình tham chiếu như WGS84 hoặc ETRS89. Trái đất không phải là một ellipsoid chính xác, vì vậy bạn cần các mô hình, không có mô hình nào hoàn toàn chính xác và tùy thuộc vào kiểu máy bạn sử dụng, khoảng cách có phần khác nhau.

Hãy đảm bảo bạn sử dụng cùng một tham chiếu cho iOS và Android.

+1

OK, tôi biết điều đó nhưng tôi không thể thiết lập mô hình này. Nó sẽ làm tôi ngạc nhiên nếu khung công tác MapKit sử dụng một mô hình tính toán khác trên các nền tảng khác. nền tảng. – MoFuRo

3

Có nhiều cách để tính toán khoảng cách giữa các coords dài/lat dựa trên cách bạn bù đắp cho độ cong của trái đất và không có cách tiếp cận đúng hay sai. Nhiều khả năng hai nền tảng này sử dụng một mô hình hơi khác.

Dưới đây là một số công thức để tự tính toán. http://www.movable-type.co.uk/scripts/latlong.html

Nếu bạn thực sự cần chúng giống nhau, chỉ cần thực hiện phép tính của riêng bạn bằng một trong các công thức này, thì bạn có thể đảm bảo bạn nhận được kết quả tương tự trên cả hai nền tảng.

+0

Đó sẽ là lựa chọn của tôi nếu họ thực sự sử dụng các mô hình tính toán khác nhau. Tôi sẽ quan tâm nếu iOS và Android thực sự sử dụng các mô hình tính toán khác nhau. – MoFuRo

+2

Vâng MapKit là mã của Apple và Android là mã Google, và ngay cả khi MapKit sử dụng thuật toán tính toán của Google, không có gì đảm bảo rằng Google chưa tinh chỉnh nó giữa các phiên bản kế tiếp của phần mềm bản đồ của họ. –

Các vấn đề liên quan