과제 요구사행에 따른 매장 목록 조회 API를 구현했다. 과제에서는 가나다순, 별점순, 거리순 정렬을 요구했으나 현재 별점 기능이 구현되지 않았기 때문에 가나다순과 거리순 정렬만 구현했다.
// StoreService.java - 거리 계산 로직
private double calculateDistance(double lat1, double lon1, double lat2, double lon2) {
final int R = 6371; // 지구 반경 (km)
double latDistance = Math.toRadians(lat2 - lat1);
double lonDistance = Math.toRadians(lon2 - lon1);
double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
+ Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
* Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
return R * c; // 킬로미터 단위의 거리
}