用java 写一个判断两个经纬度的距离相差2公里,有些明显距离超出2公里的就不需要计算距离
时间: 2024-05-01 16:22:48 浏览: 67
可以使用 Haversine 公式来计算两个经纬度之间的距离。以下是 Java 代码示例:
```java
public class DistanceCalculator {
private static final double EARTH_RADIUS = 6371; // 地球半径,单位为千米
/**
* 计算两个经纬度之间的距离,单位为千米
* @param lat1 第一个点的纬度
* @param lon1 第一个点的经度
* @param lat2 第二个点的纬度
* @param lon2 第二个点的经度
* @return 两个点之间的距离,单位为千米
*/
public static double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
double dLat = Math.toRadians(lat2 - lat1);
double dLon = Math.toRadians(lon2 - lon1);
double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(dLon / 2) * Math.sin(dLon / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = EARTH_RADIUS * c;
return distance;
}
/**
* 判断两个经纬度之间的距离是否超过2公里
* @param lat1 第一个点的纬度
* @param lon1 第一个点的经度
* @param lat2 第二个点的纬度
* @param lon2 第二个点的经度
* @return 如果距离超过2公里,返回true;否则返回false。
*/
public static boolean isDistanceOver2Km(double lat1, double lon1, double lat2, double lon2) {
double distance = calculateDistance(lat1, lon1, lat2, lon2);
return distance > 2;
}
}
```
使用示例:
```java
public class Main {
public static void main(String[] args) {
double lat1 = 39.9042; // 北京的纬度
double lon1 = 116.4074; // 北京的经度
double lat2 = 31.2304; // 上海的纬度
double lon2 = 121.4737; // 上海的经度
boolean isOver2Km = DistanceCalculator.isDistanceOver2Km(lat1, lon1, lat2, lon2);
System.out.println(isOver2Km); // 输出true,因为北京和上海之间的距离超过2公里。
}
}
```
阅读全文