我有两个位置,想要计算它们之间的距离(单位为米)。我写了一些代码,但它并不完美地工作。
private void getDistanceBetweenTwoPoints(double lat1,double lon1,double lat2,double lon2)
{
Location loc1 = new Location("");
loc1.setLatitude(lat1);
loc1.setLongitude(lon1);
Location loc2 = new Location("");
loc2.setLatitude(lat2);
loc2.setLongitude(lon2);
int R = 6371; // km
double dLat = deg2rad(lat2-lat1);
double dLon = deg2rad(lon2-lon1);
double a =
Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon/2) * Math.sin(dLon/2)
;
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
double distanceInMeters = R * c;
Log.e("distanceInMeters",distanceInMeters/10000+"mm");
}
public double deg2rad(double deg) {
return deg * (Math.PI/180);
}
如何计算距离(以米为单位)?我的目标是,如果距离>200米,则执行某些操作。如何解决我的问题?
计算出的距离存储在results[0]中。如果results长度大于等于2,则初始方位角存储在results[1]中。如果results长度大于等于3,则最终方位角存储在results[2]中。
- Daniel Nugent