欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算两个经纬度之间的距离 博客分类: 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));