Java按两点经纬度计算距离

Java按两点经纬度计算距离_第1张图片

1.Java计算

package com.hd123.cloudscm.web.controller.mdata.warehouse;

 

public class Test {

// 经度

double longitude;

// 维度

double dimensionality;

 

public double getLongitude() {

return longitude;

}

 

public void setLongitude(double longitude) {

this.longitude = longitude;

}

 

public double getDimensionality() {

return dimensionality;

}

 

public void setDimensionality(double dimensionality) {

this.dimensionality = dimensionality;

}

 

/*

* 计算两点之间距离

*

* @param start

*

* @param end

*

* @return 米

*/

public static double getDistance(Test start, Test end) {

 

double lon1 = (Math.PI / 180) * start.longitude;

double lon2 = (Math.PI / 180) * end.longitude;

double lat1 = (Math.PI / 180) * start.dimensionality;

double lat2 = (Math.PI / 180) * end.dimensionality;

// 地球半径

double R = 6371;

 

// 两点间距离 km,如果想要米的话,结果*1000就可以了

double d = Math.acos(

Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1))

* R;

 

return d * 1000;

}

 

public static void main(String[] args) {

// 测试经纬度:116.368904, 39.923423

// 测试经纬度2:116.387271, 39.922501

Test start = new Test();

start.setLongitude(116.368904);

start.setDimensionality(40.923423);

Test end = new Test();

end.setLongitude(116.387271);

end.setDimensionality(39.922501);

System.out.println(getDistance(start, end));

 

}

}

这样的算法误差较小,觉得可以忽略。

2.如果想要在页面上直接计算,可以调用高德的API。

两点间距离

调用高德的API,算出来的距离是准确的,他和百度的计算结果千米误差为20。

 

你可能感兴趣的:(java基础+常见面试题)