public class DecimalFormatUtil { //地球平均半径 private static final double EARTH_RADIUS = 6378.137; //把经纬度转为度(°) private static double rad(double d) { return d * Math.PI / 180.0; } /** * 通过经纬度获取距离(单位:) * ulongitude 用户所在 -- 经度 * ulatitude 用户所在 -- 纬度 * latitude 发布等 -- 纬度 * longitude 发布等 -- 经度 * @return 距离 */ public static double getDistance(double ulongitude, double longitude,double ulatitude, double latitude) { double radLat1 = rad(ulongitude); double radLat2 = rad(longitude); double a = radLat1 - radLat2; double b = rad(ulatitude) - rad(latitude); 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 = s / 1000; DecimalFormat df = new DecimalFormat("#.00"); s = Double.parseDouble(df.format(s)); return s; } public static void main(String[] args) { double distance1 = getDistance(104.046115, 30.6030110000, 104.074666, 30.611842); System.out.println("Distance is: " distance1 " km"); } },我来为大家科普一下关于两点经纬度计算两点间距离实例?以下内容希望对你有帮助!

两点经纬度计算两点间距离实例(通过经纬度判断两点的距离)

两点经纬度计算两点间距离实例

Util

public class DecimalFormatUtil { //地球平均半径 private static final double EARTH_RADIUS = 6378.137; //把经纬度转为度(°) private static double rad(double d) { return d * Math.PI / 180.0; } /** * 通过经纬度获取距离(单位:) * ulongitude 用户所在 -- 经度 * ulatitude 用户所在 -- 纬度 * latitude 发布等 -- 纬度 * longitude 发布等 -- 经度 * @return 距离 */ public static double getDistance(double ulongitude, double longitude,double ulatitude, double latitude) { double radLat1 = rad(ulongitude); double radLat2 = rad(longitude); double a = radLat1 - radLat2; double b = rad(ulatitude) - rad(latitude); 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 = s / 1000; DecimalFormat df = new DecimalFormat("#.00"); s = Double.parseDouble(df.format(s)); return s; } public static void main(String[] args) { double distance1 = getDistance(104.046115, 30.6030110000, 104.074666, 30.611842); System.out.println("Distance is: " distance1 " km"); } }

SQL

SELECT title, longitude, latitude, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( 30.611842 * PI() / 180 - latitude * PI() / 180 ) / 2 ), 2 ) COS(30.611842 * PI() / 180) * COS(latitude * PI() / 180) * POW( SIN( ( 104.074666 * PI() / 180 - longitude * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance_um FROM mac_rent_in ORDER BY distance_um ASC

,