How to get straight distance between two location in android?

走远了吗. 提交于 2019-12-02 17:21:45

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

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

The Haversine function is used to find the distance between two points on a sphere.

It's fairly straightforward to extend this to finding the straight line distance between two points on the Earth. The Earth is not a perfect sphere, but this is still a good approximation using a standard measurement (called WGS84) for the radius at the equator.

As CommonsWare has said, you can do this very simply by using distanceBetween(), which uses the Haversine function and the WGS84 radius.

For better understanding of implementation/math, take a look at this sample code in Python.

Distance you find with following code. You just need to get two geoPoint's latitude and longitude. and use that in following calculation to get distance.

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

That will be return distance after all calculation.

R is the radius of surface in KM, need to use in calculation and you try this. I hope it is useful for you.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!