前端传一个经纬度,java 后端怎么匹配出数据库中经纬度在附近2公里内的数据
时间: 2024-03-09 15:45:48 浏览: 22
可以使用Haversine公式来计算两个经纬度之间的距离,然后在数据库中筛选出距离小于2公里的数据。以下是Java的示例代码:
```java
public static final double RADIUS = 6371; // 地球半径,单位为公里
public static boolean isWithinTwoKilometers(double lat1, double lng1, double lat2, double lng2) {
double distance = getDistance(lat1, lng1, lat2, lng2);
return distance <= 2.0;
}
public static double getDistance(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 distance = 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))) * RADIUS;
return distance;
}
```
其中,`lat1`和`lng1`是前端传递过来的经纬度,`lat2`和`lng2`是数据库中的经纬度。`isWithinTwoKilometers`方法返回一个布尔值,表示两个经纬度之间的距离是否小于2公里。在Java中,可以将这个方法应用于筛选出符合条件的数据。