Android根据经纬度计算距离

Android根据经纬度计算距离地球半径 privatestati RADIUS 6378 137 第一种方法 返回多少米 计算两点之间距离 return 返回米 publicDouble doublelongit doublelatitu doublelo

 // 地球半径 private static final double EARTH_RADIUS = 6378.137; //第一种方法,返回多少米 / * 计算两点之间距离 * * @return 返回米 */ public Double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) { double lat1 = (Math.PI / 180) * latitude1; double lat2 = (Math.PI / 180) * latitude2; double lon1 = (Math.PI / 180) * longitude1; double lon2 = (Math.PI / 180) * longitude2; //两点间距离 km,如果想要米的话,结果*1000 double d = Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1)) * EARTH_RADIUS; if (d < 1) return (Double) (d * 1000); else return Double.valueOf(String.format("%.2f", d * 1000)); } 

在这里插入图片描述

//第二种计算返回千米 private static final double EARTH_RADIUS = 6378.137; / * 根据经纬度计算距离 * * @param longitude1 start * @param latitude1 start * @param longitude2 end * @param latitude2 end * @return */ public double getDistances(double longitude1, double latitude1, double longitude2, double latitude2) { double Lat1 = rad(latitude1); double Lat2 = rad(latitude2); double a = Lat1 - Lat2; double b = rad(longitude1) - rad(longitude2); double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(Lat1) * Math.cos(Lat2) * Math.pow(Math.sin(b / 2), 2))); s = s * EARTH_RADIUS; //有小数的情况;注意这里的10000d中的“d” s = Math.round(s * 10000d) / 10000d; s = s * 1000;//单位:米 // s = Math.round(s/10d) /100d ;//单位:千米 保留两位小数 s = Math.round(s / 100d) / 10d;//单位:千米 保留一位小数 return s; } private static double rad(double d) { return d * Math.PI / 180.0; } 

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231066.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月31日 上午10:01
下一篇 2026年1月31日 上午10:22


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号