计算两个经纬度之间的距离 博客分类: LBS 经度纬度LBS距离计算
程序员文章站
2024-03-21 22:53:16
...
要解决这个问题的时候,到网上查了很多方案,最后计算出来的都与百度计算出来的有出入。下面这个公式计算出来的距离和百度计算出来的距离是一致的。
/** * * @param longitudeA * 经度A点 * @param latitudeA * 纬度A点 * @param longitudeB * 经度B点 * @param latitudeB * 纬度B点 * @return 返回两点之间的距离,单位为米,可以根据使用场景*换算 */ public static double getDistance(double longitudeA, double latitudeA, double longitudeB, double latitudeB) { // 地球半径(千米),地球半径分为:极半径、赤道半径、平均半径,我们使用平均半径 double R = 6371.393; double C = Math.sin(Math.toRadians(latitudeA)) * Math.sin(Math.toRadians(latitudeB)) + Math.cos(Math.toRadians(latitudeA)) * Math.cos(Math.toRadians(latitudeB)) * Math.cos(Math.toRadians(longitudeA - longitudeB)); return (R * Math.acos(C)) * 1000; }
Demo:
double longitudeA = 106.486654; double latitudeA = 29.490295; double longitudeB = 106.581515; double latitudeB = 29.615467; System.out.println(getDistance(longitudeA, latitudeA, longitudeB, latitudeB));