java根据经纬度判断某经纬度在不在该经纬度附近几公里内
时间: 2023-08-10 13:03:44 浏览: 104
要根据经纬度判断某个点是否在另一个点附近几公里内,可以使用 Haversine 公式计算两个点之间的距离。
Haversine 公式如下:
```
a = sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlong/2)
c = 2 * atan2( √a, √(1−a) )
d = R * c
```
其中,`lat1` 和 `long1` 为第一个点的纬度和经度,`lat2` 和 `long2` 为第二个点的纬度和经度,`Δlat` 和 `Δlong` 分别为两个点纬度和经度的差值,`R` 为地球半径,取值为 6,371km。
根据公式计算出两个点之间的距离后,只需要判断这个距离是否小于等于目标附近的距离,如果小于等于,则说明该点在目标点附近。
Java 代码示例:
```java
public static final double EARTH_RADIUS = 6371; // 地球半径,单位 km
public static boolean isNearby(double lat1, double long1, double lat2, double long2, double distance) {
double dLat = Math.toRadians(lat2 - lat1);
double dLong = Math.toRadians(long2 - long1);
double a = Math.pow(Math.sin(dLat / 2), 2) + Math.cos(Math.toRadians(lat1))
* Math.cos(Math.toRadians(lat2)) * Math.pow(Math.sin(dLong / 2), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = EARTH_RADIUS * c; // 计算两个点之间的距离,单位 km
return d <= distance;
}
```
其中,`lat1` 和 `long1` 是第一个点的纬度和经度,`lat2` 和 `long2` 是第二个点的纬度和经度,`distance` 是目标附近的距离,单位 km。函数返回值为布尔类型,表示第二个点是否在目标点附近。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)