package com.doumee.core.utils; /** * Created by IntelliJ IDEA. * * @Author : Rk * @create 2024/8/14 17:22 */ public class PositionUtil { /** * 赤道半径(单位:米) */ private static final double EQUATOR_RADIUS = 6378137; /** * 方法一:(反余弦计算方式) * * @param longitude1 第一个点的经度 * @param latitude1 第一个点的纬度 * @param longitude2 第二个点的经度 * @param latitude2 第二个点的纬度 * @return 返回距离,单位m */ public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) { // 纬度 double lat1 = Math.toRadians(latitude1); double lat2 = Math.toRadians(latitude2); // 经度 double lon1 = Math.toRadians(longitude1); double lon2 = Math.toRadians(longitude2); // 纬度之差 double a = lat1 - lat2; // 经度之差 double b = lon1 - lon2; // 计算两点距离的公式 double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2))); // 弧长乘赤道半径, 返回单位: 米 s = s * EQUATOR_RADIUS; return s; } }