java 怎么实现传入两地经纬度 获取之间的距离
时间: 2024-11-03 21:24:01 浏览: 13
传入经纬度获取到当前的经纬度的区域
在 Java 中,你可以使用 `GeodeticCalculator` 类来自地理坐标系(WGS84)计算两点间的距离。这个类位于 `org.locationtech.jts.geom` 包下的 `com.vividsolutions.jts.geom` 子包,需要引入 JTS Topology Suite 库。以下是一个简单的步骤示例:
1. 首先,你需要导入所需的库:
```java
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.LineString;
import org.locationtech.jts.geom.PrecisionModel;
import org.locationtech.jts.io.WKTReader;
```
2. 然后创建 `Coordinate` 对象代表两个经纬度点:
```java
double lon1 = ...; // 第一点经度
double lat1 = ...; // 第一点纬度
double lon2 = ...; // 第二点经度
double lat2 = ...; // 第二点纬度
Coordinate coord1 = new Coordinate(lon1, lat1);
Coordinate coord2 = new Coordinate(lon2, lat2);
```
3. 创建 `GeometryFactory` 和 `PrecisionModel` 实例:
```java
PrecisionModel precisionModel = PrecisionModel.getDefault();
GeometryFactory geometryFactory = new GeometryFactory(precisionModel);
```
4. 将坐标转换成 `LineString` 对象:
```java
LineString line = geometryFactory.createLineString(new Coordinate[]{coord1, coord2});
```
5. 使用 `GeodeticCalculator` 计算两点间的距离:
```java
GeodeticCalculator calculator = new GeodeticCalculator();
calculator.setStartingLocation(coord1);
calculator.setEndLocation(coord2);
// 获取直线距离(忽略曲率)
double distanceInMeters = calculator.getDistance() * 1000; // 转换为米
```
6. 最后,结果存储在 `distanceInMeters` 变量中。
注意:这个计算的是地球表面的大圆距离,如果你需要更精确的距离,可以考虑使用 Haversine 公式或者其他专门的地心球面距离算法。
阅读全文