2013-07-11 28 views
6

đọc Câu hỏi đầu tiên cẩn thận ...Cách lấy khoảng cách thẳng giữa hai vị trí trong android?

Tôi cần thẳng khoảng cách, không bằng cách đi bộ, xe, hoặc vv

Hãy xem hình ảnh này mà đưa ra dưới đây,

Straight

Google cung cấp cho chúng tôi khoảng cách bằng ô tô và lái xe.

Nhưng tôi không muốn, tôi muốn khoảng cách thẳng giữa hai vị trí (vĩ độ - kinh độ).

Được hiển thị dưới dạng Dòng ĐỎ.

LƯU Ý: Tôi không muốn đặt đường đỏ trên bản đồ của Google, chỉ muốn các Quãng đường trong đơn vị

+0

111.325 km = (gần) 1 độ – Selvin

+1

Điều đó không phải lúc nào cũng đúng Selvin. Độ dài dọc thay đổi theo vĩ độ của bạn. –

+0

Đây là bài tập: Lần sau hãy thử lịch sự trong khi đặt câu hỏi. – Nirmal

Trả lời

15

ANDROID

double distance 

Location locationA = new Location(“point A”) 

locationA.setLatitude(latA); 

locationA.setLongitude(lngA); 

Location locationB = new Location(“point B”); 

locationB.setLatitude(latB); 

LocationB.setLongitude(lngB); 

distance = locationA.distanceTo(locationB); 
(dặm, km, vv.)

MATHEMATICALY

a = distance in degrees //meterConversion = 1609; 

b = 90 - latitude of point 1 

c = 90 - latitude of point 2 

l = longitude of point 1 - longitude of point 2 

Cos(a) = Cos(b)Cos(c) + Sin(b)Sin(c)Sin(l) 

d = circumference of Earth * a/360 // circumference of Earth = 3958.7558657440545D km 
+0

Tôi sẽ thử mã này .. – Darshak

+1

Đó là hoàn hảo ... cho khoảng cách trong Meter .... –

+0

Cảm ơn bạn đã mã ... nó hoạt động cho tôi ... – Darshak

2

Khoảng cách bạn tìm thấy với mã sau. Bạn chỉ cần có hai vĩ độ và kinh độ của geoPoint. và sử dụng tính năng đó để tính khoảng cách.

R = 6371; // km 
d = Math.acos(Math.sin(lat1)*Math.sin(lat2) + 
       Math.cos(lat1)*Math.cos(lat2) * 
       Math.cos(lon2-lon1)) * R; 

Đó sẽ là khoảng cách trả về sau khi tính toán.

R là bán kính bề mặt tính bằng KM, cần sử dụng trong tính toán và bạn thử tính năng này. Tôi hy vọng nó rất hữu ích cho bạn.

3

Haversine function được sử dụng để tìm khoảng cách giữa hai điểm trên hình cầu.

Khá đơn giản để mở rộng điều này để tìm khoảng cách đường thẳng giữa hai điểm trên trái đất. Trái đất không phải là một quả cầu hoàn hảo, nhưng đây vẫn là một phép tính gần đúng bằng cách sử dụng phép đo chuẩn (được gọi là WGS84) cho bán kính tại đường xích đạo.

Như CommonsWare đã nói, bạn có thể làm điều này rất đơn giản bằng cách sử dụng distanceBetween(), sử dụng hàm Haversine và bán kính WGS84.

Để hiểu rõ hơn về triển khai/toán học, hãy xem sample code bằng Python này.