美文网首页
JAVA根据经纬度计算两点距离

JAVA根据经纬度计算两点距离

作者: 拒绝飞的鸟 | 来源:发表于2016-03-29 09:59 被阅读4817次

开发附近的人需要用到计算两点距离。

网上找到一个,是Google给出的一个公式:

private static final  double EARTH_RADIUS = 6378137;//赤道半径
private static double rad(double d){
    return d * Math.PI / 180.0;
}
public static double GetDistance(double lon1,double lat1,double lon2, double lat2) {
    double radLat1 = rad(lat1);
    double radLat2 = rad(lat2);
    double a = radLat1 - radLat2;
    double b = rad(lon1) - rad(lon2);
    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;    
   return s;//单位米
}

然而认真查看百度API你会发现百度提供了一个计算工具,两者计算结果都差不多,还是百度提供的吧:

//使用前需要在setContentView前初始化:
SDKInitializer.initialize(getApplicationContext());

double distance = DistanceUtil. getDistance(p1,p2);//单位米

相关文章

网友评论

      本文标题:JAVA根据经纬度计算两点距离

      本文链接:https://www.haomeiwen.com/subject/xzqslttx.html