Pom
<!-- https://mvnrepository.com/artifact/org.gavaghan/geodesy -->
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
<version>1.1.3</version>
</dependency>
代码
public class GeodesyUtil {
/**
* 计算两个经纬度之间的距离
*
* @param gpsFrom 第一个经纬度
* @param gpsTo 第二个经纬度
* @param ellipsoid 计算方式
* @return 返回的距离,单位m
*/
public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) {
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
return geoCurve.getEllipsoidalDistance();
}
/**
* 计算两个经纬度之间的距离
*
* @param lon1 第一个经度
* @param lat1 第一个纬度
* @param lon2 第二个经度
* @param lat2 第二个纬度
* @return 返回的距离,单位m
*/
public static BigDecimal getDistanceMeter(double lon1, double lat1, double lon2, double lat2) {
GlobalCoordinates source = new GlobalCoordinates(lon1, lat1);
GlobalCoordinates target = new GlobalCoordinates(lon2, lat2);
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
return BigDecimal.valueOf(getDistanceMeter(source, target, Ellipsoid.Sphere));
}
}