package com.dsh.account.util;
|
|
|
/**
|
* 经纬度工具类
|
*/
|
|
public class LonlatUtils {
|
|
public static final double R = 6371; // Earth radius in kilometers
|
|
/**
|
* 计算两个经纬度之间的直线距离
|
*
|
* @param lat1 经度1
|
* @param lon1 纬度1
|
* @param lat2 经度2
|
* @param lon2 纬度2
|
* @return 两者距离
|
*/
|
public static double distance(double lat1, double lon1, double lat2, double lon2) {
|
double dLat = Math.toRadians(lat2 - lat1);
|
double dLon = Math.toRadians(lon2 - lon1);
|
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
|
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
|
Math.sin(dLon / 2) * Math.sin(dLon / 2);
|
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
double distance = R * c;
|
return distance;
|
}
|
|
|
}
|