Spring Boot集成geodesy实现距离计算
在Spring Boot中,你可以使用geodesy库来计算两点之间的距离。以下是一个简单的例子,展示了如何在Spring Boot应用中集成geodesy库并进行距离计算:
- 首先,在Spring Boot项目的
pom.xml
中添加geodesy的依赖:
<dependency>
<groupId>org.gavaghan</groupId>
<artifactId>geodesy</artifactId>
<version>1.1.3</version>
</dependency>
- 然后,你可以创建一个服务来使用geodesy库进行距离计算:
import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GeodeticCoordinate;
import org.springframework.stereotype.Service;
@Service
public class GeodesyService {
public double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
// 创建两个坐标点
GeodeticCoordinate coord1 = new GeodeticCoordinate(Angle.degrees(lat1), Angle.degrees(lon1));
GeodeticCoordinate coord2 = new GeodeticCoordinate(Angle.degrees(lat2), Angle.degrees(lon2));
// 使用WGS-84椭球体进行计算
GeodeticCalculator calculator = new GeodeticCalculator(Ellipsoid.WGS84);
calculator.setStartingGeographicPoint(coord1.getLatitude(), coord1.getLongitude());
calculator.setDestinationGeographicPoint(coord2.getLatitude(), coord2.getLongitude());
// 计算两点之间的距离
double distance = calculator.getOrthodromicDistance();
return distance;
}
}
- 在你的Spring Boot应用中,你可以注入
GeodesyService
并使用它来获取两点之间的距离:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DistanceController {
private final GeodesyService geodesyService;
@Autowired
public DistanceController(GeodesyService geodesyService) {
this.geodesyService = geodesyService;
}
@GetMapping("/distance")
public double getDistance(double lat1, double lon1, double lat2, double lon2) {
return geodesyService.calculateDistance(lat1, lon1, lat2, lon2);
}
}
当你调用/distance
接口时,你可以传入两个点的纬度和经度,它将返回两点之间的正交距离(直线距离),单位为米。
评论已关闭