Java已知两点坐标,求真实距离
直接贴代码
package com.xdja.icms.util;
import java.text.DecimalFormat;
public final class DistanceUtils {
/**
* 地球半径,单位m
*/
private static final double EARTH_RADIUS = 6378137;
private static final Double PI = Math.PI;
private static final Double PK = 180 / PI;
/**
*
* 根据经纬度计算两点之间的距离
*
* @param lat_a a的经度
* @param lng_a a的维度
* @param lat_b b的经度
* @param lng_b b的维度
* @return 距离
*/
public static String getDistance(double lat_a, double lng_a, double lat_b, double lng_b) {
double t1 =Math.cos(lat_a / PK) * Math.cos(lng_a / PK) * Math.cos(lat_b / PK) * Math.cos(lng_b / PK);
double t2 =Math.cos(lat_a / PK) * Math.sin(lng_a / PK) * Math.cos(lat_b / PK) * Math.sin(lng_b / PK);
double t3 = Math.sin(lat_a / PK) * Math.sin(lat_b / PK);
double tt = Math.acos(t1 + t2 + t3);
double s = EARTH_RADIUS * tt;
s = Math.round(s * 10000d) / 10000d;//精确距离的数值
s = s / 1000;//将单位转换为km,如果想得到以米为单位的数据 就不用除以1000
//四舍五入 保留一位小数
DecimalFormat df = new DecimalFormat("#.0");
return df.format(s);
}
public static void main(String[] args) {
String f = getDistance(34.833089,113.539017, 34.853006,113.591685);
System.out.println(f);
}
}