/** * 计算两点之间距离 * * @param start * @param end * @return 千米 */ public static double getDistance(LatLng start, LatLng end) { double lat1 = (Math.PI / 180) * Double.parseDouble(start.getLat()); double lat2 = (Math.PI / 180) * Double.parseDouble(end.getLat()); double lon1 = (Math.PI / 180) * Double.parseDouble(start.getLng()); double lon2 = (Math.PI / 180) * Double.parseDouble(end.getLng()); //地球半径 double R = 6378.137; double a = doubleDecimal((lat1 - lat2) * 1000);//经度的差值 double b = doubleDecimal((lon1 - lon2) * 1000);//纬度的差值 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))); double s1 = s * R; double s2 = doubleDecimal(s1 / 1000); // 千米 return s2; } /** * 保留两位小数 */ public static double doubleDecimal(double f) { BigDecimal bg = new BigDecimal(f); return bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); }
根据经纬度计算两点之间的距离
最新推荐文章于 2024-07-09 06:59:41 发布