用java 写一个判断两个经纬度的距离相差2公里
时间: 2024-04-30 15:21:42 浏览: 92
可以使用 Haversine 公式计算两个经纬度之间的距离,然后判断距离是否小于等于2公里。
下面是一个示例代码:
```java
public class DistanceCalculator {
private static final double EARTH_RADIUS = 6371; // 地球半径,单位为千米
/**
* 计算两个经纬度之间的距离
* @param lat1 第一个点的纬度,单位为度
* @param lng1 第一个点的经度,单位为度
* @param lat2 第二个点的纬度,单位为度
* @param lng2 第二个点的经度,单位为度
* @return 两个经纬度之间的距离,单位为千米
*/
public static double distance(double lat1, double lng1, double lat2, double lng2) {
double radLat1 = Math.toRadians(lat1);
double radLat2 = Math.toRadians(lat2);
double radLng1 = Math.toRadians(lng1);
double radLng2 = Math.toRadians(lng2);
double a = Math.sin((radLat1 - radLat2) / 2) * Math.sin((radLat1 - radLat2) / 2)
+ Math.cos(radLat1) * Math.cos(radLat2) * Math.sin((radLng1 - radLng2) / 2) * Math.sin((radLng1 - radLng2) / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double distance = EARTH_RADIUS * c;
return distance;
}
public static void main(String[] args) {
double lat1 = 39.9075; // 北京市的纬度
double lng1 = 116.3972; // 北京市的经度
double lat2 = 31.2304; // 上海市的纬度
double lng2 = 121.4737; // 上海市的经度
double distance = distance(lat1, lng1, lat2, lng2);
System.out.println("北京市和上海市之间的距离为:" + distance + "千米");
if (distance <= 2) {
System.out.println("两个经纬度之间的距离小于等于2公里");
} else {
System.out.println("两个经纬度之间的距离大于2公里");
}
}
}
```
注意:这里的经纬度是以度为单位的,如果你有其他单位的经纬度需要进行转换。此外,这里计算的是地球上两个点之间的直线距离,并不考虑地形、地貌等因素对距离的影响。
阅读全文