package com.fthw.util.base;

/**

* 经纬距离算法

*

* @author wangjh

* @version $Revision 1.0 $ 2017年6月19日 下午3:42:48

*/

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;

return s;

}

public static void main(String[] args) {

System.out.print(LocationUtils.getDistance( 41.777148,123.437643, 41.777067,123.452142));

}

}

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐