通过经纬度计算两点之间的距离

1. 相关依赖

xml 复制代码
	<!--计算距离-->
	<dependency>
		<groupId>org.gavaghan</groupId>
		<artifactId>geodesy</artifactId>
		<version>1.1.3</version>
	</dependency>

2.具体的工具类的实现

java 复制代码
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GeodeticCurve;
import org.gavaghan.geodesy.GlobalCoordinates;

import java.math.BigDecimal;

public class CalculatedDistanceUtils {


    /**
     * @param sourceLongitude 来源经度(用户)
     * @param sourceLatitude 来源纬度(用户)
     * @param targetLongitude 目标经度
     * @param targetLatitude 目标纬度
     * @return 米
     */
    public static double getDistanceMeter(BigDecimal sourceLongitude, BigDecimal sourceLatitude, BigDecimal targetLongitude, BigDecimal targetLatitude){

        //可能会出现用户经纬度为空的情况,那就返回个-1
        if (sourceLongitude == null || sourceLatitude == null){
            return -1;
        }

        GlobalCoordinates source = new GlobalCoordinates(sourceLatitude.doubleValue(), sourceLongitude.doubleValue());
        GlobalCoordinates target = new GlobalCoordinates(targetLatitude.doubleValue(), targetLongitude.doubleValue());

        return getDistanceMeter(source, target, Ellipsoid.Sphere);
    }


    public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){

        //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
        GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);

        return geoCurve.getEllipsoidalDistance();
    }

}
相关推荐
感谢地心引力5 分钟前
【MATLAB】绘制投资组合的有效前沿
开发语言·matlab·金融·股票·有效前沿
旧物有情5 分钟前
蓝桥杯历届真题--#好数,简单模拟(C++,Java)
java·c++·蓝桥杯
嘻嘻哈哈曹先生6 分钟前
Token
java
xianwu5438 分钟前
反向代理模块。
linux·开发语言·网络·c++·git
前端啊龙36 分钟前
eslint.config.js和.eslintrc.js有什么区别
开发语言·前端·javascript
BinaryBardC36 分钟前
R语言的软件工程
开发语言·后端·golang
qq_441996051 小时前
Java 抽象类与接口的成员定义和区别总结
java·开发语言
寒冰碧海1 小时前
Spring Boot + MyBatis Plus 存储 JSON 或 List 列表全攻略
java·spring boot·后端·json·list·mybatis
程序员老冯头1 小时前
第三十六章 C++ Web 编程
开发语言·c++·microsoft
被迫学习Java1 小时前
在Java中实现集合排序
java·开发语言·windows