JAVA根据两个经纬度计算距离返回相差多少米

找下我之前工作的地方和对面的那座办公楼
福利盈通经纬度

津滨腾越大厦
老样子直接上代码看实现结果
import java.util.HashMap;
import java.util.Map;

/**
 * 经纬度工具类
 */
public class LngLatUtil {
    private static double EARTH_RADIUS = 6378137;
    private static double RAD = Math.PI / 180.0;

    /**
     * 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度
     *
     * @param lng    经度
     * @param lat    纬度
     * @param raidus 半径(米)
     * @return
     */
    public static Map GetAround( double lng, double lat, int raidus ) {

        Double latitude = lat;
        Double lnggitude = lng;

        Double degree = (24901 * 1609) / 360.0;
        double raidusMile = raidus;

        Double dpmLat = 1 / degree;
        Double radiusLat = dpmLat * raidusMile;
        Double minLat = latitude - radiusLat;
        Double maxLat = latitude + radiusLat;

        Double mpdLng = degree * Math.cos( latitude * (Math.PI / 180) );
        Double dpmLng = 1 / mpdLng;
        Double radiusLng = dpmLng * raidusMile;
        Double minLng = lnggitude - radiusLng;
        Double maxLng = lnggitude + radiusLng;
        Map result = new HashMap<>();
        result.put( "minLat", minLat );
        result.put( "minLng", minLng );
        result.put( "maxLat", maxLat );
        result.put( "maxLng", maxLng );
        return result;
    }

    /**
     * 根据提供的两个经纬度计算距离(米)
     *
     * @param lng1 经度1
     * @param lat1 纬度1
     * @param lng2 经度2
     * @param lat2 纬度2
     * @return 距离(米)
     */
    public static double GetDistance( double lng1, double lat1, double lng2, double lat2 ) {
        double radLat1 = lat1 * RAD;
        double radLat2 = lat2 * RAD;
        double a = radLat1 - radLat2;
        double b = (lng1 - lng2) * RAD;
        double s = 2 * Math.asin( Math.sqrt( Math.pow( Math.sin( a / 2 ), 2 ) +
                Math.cos( radLat1 ) * Math.cos( radLat2 ) * Math.pow( Math.sin( b / 2 ), 2 ) ) );
        s = s * EARTH_RADIUS;
        s = Math.round( s * 10000 ) / 10000;
        return s;
    }

    public static void main( String[] args ) {
        System.out.println(GetDistance( 113.328402,23.131862, 113.327446,23.131921));
    }
}
还有获取半径内的最大最小经纬度 需要的同学自己测试哈
输出结果为:
98.0

你可能感兴趣的:(JAVA根据两个经纬度计算距离返回相差多少米)