package com.bohuikeji.frame.module.admin.utils;

import java.math.BigDecimal;
import java.net.URL;

public final class DistanceUtils {

    /**
     * 地球半径,单位 km
     */
    private static final Double EARTH_RADIUS = 6378.137;
   /* private static double rad(double d) {
        return d * Math.PI / 180.00; // 角度转换成弧度
    }*/

    /**
     * 根据经纬度，计算两点间的距离
     * @param longitude1
     * @param latitude1
     * @param longitude2
     * @param latitude2
     * @return 返回距离 单位千米
     */
    public static double getDistance(String longitude1, String latitude1, String longitude2, String latitude2) {
        // 纬度
        Double lat1 = Math.toRadians(Double.parseDouble(latitude1));
        Double lat2 = Math.toRadians(Double.parseDouble(latitude2));
        // 经度
        Double lng1 = Math.toRadians(Double.parseDouble(longitude1));
        Double lng2 = Math.toRadians(Double.parseDouble(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;
        double mun = Math.round(s * 10000d) / 10000d;
        BigDecimal cimal = new BigDecimal(mun);
        double f = cimal.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
        return f<1?1:f;
    }

    /**
     * test
     * @param args
     */
   /* public static void main(String[] args){
        double distance = getDistance("121.491909","31.233234","121.411994","31.206134");
        System.out.println("Distance is:"+distance);
    }*/

}
