根据一个经纬度坐标获取周边最近经纬。Java实现
时间: 2024-03-09 08:48:06 浏览: 23
可以使用Haversine公式计算两个经纬度之间的距离,然后遍历周围的经纬度点,找到最近的点。
下面是Java代码示例:
```java
public class GeoUtils {
private static final double EARTH_RADIUS = 6371.0; // 地球半径,单位km
// 根据经纬度计算距离,返回单位为km的距离
public static double distance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = Math.toRadians(lat1);
double radLat2 = Math.toRadians(lat2);
double a = radLat1 - radLat2;
double b = Math.toRadians(lng1) - Math.toRadians(lng2);
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
s *= EARTH_RADIUS;
return s;
}
// 根据一个经纬度坐标获取周边最近经纬度
public static double[] nearest(double lat, double lng, List<double[]> coords) {
double minDist = Double.MAX_VALUE;
double[] nearestCoord = null;
for (double[] coord : coords) {
double dist = distance(lat, lng, coord[0], coord[1]);
if (dist < minDist) {
minDist = dist;
nearestCoord = coord;
}
}
return nearestCoord;
}
}
```
其中,`distance`方法计算两个经纬度之间的距离,`nearest`方法遍历周围的经纬度点,找到距离当前点最近的点,并返回该点的经纬度。使用时,可以将周围的经纬度点存放在一个二维数组或者List中,然后调用`nearest`方法即可。