12345678910111213141516171819202122232425262728293031323334353637383940 |
- package io.platform.utils;
- /**
- * @author sx
- * @date 2020/09/04
- */
- public class ElectricFenceUtil {
- /**
- * 地球半径,单位 km
- */
- private static final double EARTH_RADIUS = 6378.137;
- /**
- * 根据经纬度,计算两点间的距离
- *
- * @param longitude1 第一个点的经度
- * @param latitude1 第一个点的纬度
- * @param longitude2 第二个点的经度
- * @param latitude2 第二个点的纬度
- * @return 返回距离 单位千米
- */
- public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
- // 纬度
- double lat1 = Math.toRadians(latitude1);
- double lat2 = Math.toRadians(latitude2);
- // 经度
- double lng1 = Math.toRadians(longitude1);
- double lng2 = Math.toRadians(longitude2);
- // 纬度之差
- double a = lat1 - lat2;
- // 经度之差
- double b = lng1 - lng2;
- // 计算两点距离的公式
- 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 * EARTH_RADIUS * 1000;
- return s;
- }
- }
|