代码
/**
* 测距工具
* @author qb
*/
public class DistanceUtils {
/**
* 赤道半径
*/
private static final double EARTH_RADIUS = 6378.137;
private static double rad(double d) {
return d * Math.PI / 180.0;
}
/**
* Description : 通过经纬度获取距离(单位:米)
* Group :
*
* @param originLon 出发点经度
* @param originLat 出发点纬度
* @param destinationLon 目的地经度
* @param destinationLat 目的地纬度
* @return double
*/
@SuppressWarnings("all")
public static double getDistance(String originLon, String originLat, String destinationLon,
String destinationLat) {
double radLat1 = rad(Double.parseDouble(originLat));
double radLat2 = rad(Double.parseDouble(destinationLat));
double a = radLat1 - radLat2;
double b = rad(Double.parseDouble(originLon)) - rad(Double.parseDouble(destinationLon));
double s = 2 * Math.asin(
Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
// 保留两位小数
s = Math.round(s * 100d) / 100d;
s = s * 1000;
return s;
}
public static void main(String[] args) {
final String longitude = "117.127823";
final String dimension = "36.674049";
final String longitudeParam = "117.11764544907382";
final String dimensionParam = "36.687643568521786";
double distance = getDistance(longitude, dimension, longitudeParam, dimensionParam);
System.out.println(distance);
System.out.println(distance > 200);
}
}