package com.matrix.system.common.tools; import java.math.BigDecimal; public class LocationUtil { private static final double EARTH_RADIUS = 6378.137; private static double rad(double d){ return d * Math.PI / 180.0; } /** * 根据两个位置的经纬度,来计算两地的距离(单位为M) * 参数为double类型 * locX 当前位置经度 * locY 当前位置纬度 * shopX 店铺位置经度 * shopY 店铺位置纬度 */ public static BigDecimal getDistance(double locX, double locY, double shopX, double shopY) { double a, b, d, sa2, sb2; locY = rad(locY); shopY = rad(shopY); a = locY - shopY; b = rad(locX - shopX); sa2 = Math.sin(a / 2.0); sb2 = Math.sin(b / 2.0); d = 2 * EARTH_RADIUS * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(locY) * Math.cos(shopY) * sb2 * sb2)); return BigDecimal.valueOf(d); } public static void main(String[] args) { // 112.886891,28.222562,114.061937,22.626003 -- 634093.3209722887 // 113.930692,22.939454 -- 597367.3546527711 // System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454)); System.out.println(BigDecimal.ONE.compareTo(BigDecimal.ZERO)>0); } }