| 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; | 
|     } | 
|   | 
| } |