java根据经纬度计算距离
前言
最近有个需求是根据经纬度获取用户之间的距离,最初使用的是Redis中的GEO ,但是计算出来的距离和预期的偏差较大,所以寻求了另外的一种方式,通过geodesy来计算两个经纬度之间的距离,如果大家有谁使用了redis方式计算成功了欢迎评论给我,让我学习一下。
首先引入依赖 org.gavaghan geodesy 1.1.3复制代码
距离计算工具类import org.gavaghan.geodesy.Ellipsoid;import org.gavaghan.geodesy.GeodeticCalculator;import org.gavaghan.geodesy.GeodeticCurve;import org.gavaghan.geodesy.GlobalCoordinates;import java.math.BigDecimal;import java.math.RoundingMode;public class DistanceUtils {/**
* 根据经纬度计算距离
*
* @param lon1 经度1
* @param lat1 纬度1
* @param lon2 经度2
* @param lat2 纬度2
* @return 距离 (km)
*/public static String getDistance(String lon1, String lat1, String lon2, String lat2) {
GlobalCoordinates source = new GlobalCoordinates(Double.parseDouble(lat1), Double.parseDouble(lon1));
GlobalCoordi