经纬度计算有各种计算方式,一般误差也各不相同。个人觉着结合地球半径的计算方法可能靠谱一些,但是具体的计算公式是怎么来的,就不清楚,不知道谁提出的。下面给出一个计算方法和经纬度查询网站上的查询结果很接近了。
下面给出代码,并附上运行的结果:
package com.xxx.javaee.common;
public class DistanceCalculate {
//地球半径
private static final double R = 6378.137d;
public static double radius(double d) {
return d * Math.PI / 180.0;
}
public static double getDistanceByR(Point a,Point b) {
double distance = 0;
double lata = radius(a.latitude);
double latb = radius(b.latitude);
double latd = lata - latb;
double lond = radius(a.longitude-b.longitude);
double sina = Math.sin(latd/2.0);
double sinb = Math.sin(lond/2.0);
distance = 2 * R * Math.asin(Math.sqrt(sina*sina+Math.cos(lata)*Math.cos(latb)*sinb*sinb));
return distance;
}
public static void main(String[] args) {
Point a = new Point(116.4028930664d,39.9034155951d);
Point b = new Po