Java已知两点坐标,求真实距离

直接贴代码

package com.xdja.icms.util;

import java.text.DecimalFormat;

public final class DistanceUtils {

    /**
     * 地球半径,单位m
     */
    private static final double EARTH_RADIUS = 6378137;
    private static final Double PI = Math.PI;
    private static final Double PK = 180 / PI;

    /**
     *
     * 根据经纬度计算两点之间的距离
     *
     * @param lat_a a的经度
     * @param lng_a a的维度
     * @param lat_b b的经度
     * @param lng_b b的维度
     * @return 距离
     */
    public static String getDistance(double lat_a, double lng_a, double lat_b, double lng_b) {
        double t1 =Math.cos(lat_a / PK) * Math.cos(lng_a / PK) * Math.cos(lat_b / PK) * Math.cos(lng_b / PK);
        double t2 =Math.cos(lat_a / PK) * Math.sin(lng_a / PK) * Math.cos(lat_b / PK) * Math.sin(lng_b / PK);
        double t3 = Math.sin(lat_a / PK) * Math.sin(lat_b / PK);
        double tt = Math.acos(t1 + t2 + t3);
        double s = EARTH_RADIUS * tt;
        s = Math.round(s * 10000d) / 10000d;//精确距离的数值
        s = s / 1000;//将单位转换为km,如果想得到以米为单位的数据 就不用除以1000
        //四舍五入 保留一位小数
        DecimalFormat df = new DecimalFormat("#.0");
        return df.format(s);
    }

    public static void main(String[] args) {
        String f = getDistance(34.833089,113.539017, 34.853006,113.591685);
        System.out.println(f);
    }
}

posted @ 2020-10-11 20:37  ThomasYue  阅读(352)  评论(0编辑  收藏  举报