package com.matrix.system.common.tools;
|
|
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 double 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 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));
|
}
|
}
|