平面两点距离:
Point p1 = new Point(5, 6);// 定义第一个点的坐标(5,6)
Point p2 = new Point(7,8);// 定义第二个点的坐标(7,8)
//定位坐标
System.out.println("p1的x坐标为"+p1.getX());
System.out.println("p1的y坐标为"+p1.getY());
System.out.println("p2的x坐标为"+p2.getX());
System.out.println("p2的y坐标为"+p2.getY());
// 计算两点间距离公式
double juli = Math.sqrt(Math.abs((p1.getX() - p2.getX())* (p1.getX() - p2.getX())+(p1.getY() - p2.getY())* (p1.getY() - p2.getY())));
System.out.println("两点间的距离是:" + juli);
球型方式计算及所选半径范围坐标计算:
/**
* 地球半径值
*/
private static final double EARTH_RADIUS = 6378137.0;
/**
* 计算两个位置中距离,返回单位是米 latitude
*/
public static double getDistance(double startLongitude, double startLatitude,
double endLongitude, double endLatitude) {
double startLat = rad(startLatitude);
double endLat = rad(endLatitude);
double a = startLat - endLat;
double b = rad(startLongitude) - rad(endLongitude);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
+ Math.cos(startLat) * Math.cos(endLat)
* Math.pow(Math.sin(b / 2), 2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
}
private static double rad(double d) {
return d * Math.PI / 180.0;
}
/**
* 将坐标距离进行排序,越近的越靠前,返回值用MAP接收
* @param distance 距离数组
* @return 返回结果 distance 为距离集合 subscript 为原距离数组下标集合
*/
public static Map rulePlan(double[] distance) {
HashMap map = new HashMap();
for (int i = 0; i < distance.length; i++) {
map.put(distance[i], i); // 将值和下标存入Map
}
// 排列
List list = new ArrayList();
Arrays.sort(distance); // 升序排列
for (int i = 0; i < distance.length; i++) {
list.add(distance[i]);
}
List jlList = new ArrayList();
for (int i = 0; i < list.size(); i++) {
jlList.add(list.get(i));
}
List indexList = new ArrayList();
// 查找原始下标
for (int i = 0; i < distance.length; i++) {
indexList.add(map.get(distance[i]));
}
Map resultMap = new HashMap<>();
resultMap.put("distance", jlList);
resultMap.put("subscript", indexList);
return resultMap;
}
注:尚不完善,请根据自身需求进行参考!