package com.xzx.gc.common.utils; import lombok.extern.slf4j.Slf4j; /** * 距离查询工具 */ @Slf4j public class LocationUtils { private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 通过经纬度获取距离(单位:米) * * @param lat1 * @param lng1 * @param lat2 * @param lng2 * @return */ public static double getDistance(double lat1, double lng1, double lat2, double lng2) { double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); 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 * 10000d) / 10000d; s = s * 1000; log.debug("开始计算2点距离,第一点经度:{},纬度:{},第二点经度:{},纬度:{},距离{}公里",lng1,lat1,lng2,lat2,s/1000); return s; } public static void main(String[] args) { double distance = getDistance(28.16652, 112.937054, 28.169813, 112.929074); System.out.println(distance); } }