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

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

网上找到一个,是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);//单位米

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画...
    Akitas阅读 1,238评论 0 2
  • 从前 家里家外的人 管我叫妹妹姐姐 或者叫我娘亲阿姨舅妈婶婶姑姑 我爱听 也高兴 那时 我觉得那是我的辈分 是尊称...
    婆婆今年十八阅读 382评论 0 5
  • 今天,妈妈把一块钱放进了我的书包,我问妈妈:“什么放进一块钱呢?”妈妈回答:“今天早上去给徐卓彤购买纸币...
    小依涵阅读 412评论 0 2
  • 风姿卓然的那片云,倩影如莲,翩若惊鸿,游龙般地飘荡在蔚蓝的空中,时而清晰可见,时而朦朦胧胧,时而荡漾着一份安祥,...
    冷夜阅读 919评论 1 7