How to get straight distance between two location in android?

安稳与你 提交于 2019-12-03 03:58:54

问题


First read Question carefully ...

I need straight distance, not by walking,car,or etc.

Take a look to this image which given below,

Google provide us distance by car and driving.

But I don't want it, I want straight distance between two location (latitude - longitude).

Which is displayed as as RED LINE.

NOTE : I don't want to put red line on Google map, just want the Distance in Units(mile,km,etc.)


回答1:


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



回答2:


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.




回答3:


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.



来源:https://stackoverflow.com/questions/17594924/how-to-get-straight-distance-between-two-location-in-android

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