diff --git a/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteDetailDTO.java b/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteDetailDTO.java index c63fec7..64866e5 100644 --- a/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteDetailDTO.java +++ b/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteDetailDTO.java @@ -6,6 +6,8 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; +import java.util.Map; + @Getter @RequiredArgsConstructor(access = AccessLevel.PRIVATE) public class RouteDetailDTO { @@ -13,8 +15,10 @@ public class RouteDetailDTO { private final double dist; @Schema(description = "좌회전, 우회전, 위험요소 등 정보", example = "RIGHT") private final DirectionType directionType; + @Schema(description = "상세 경로의 좌표", example = "{\"lag\": 127.123456, \"lat\": 37.123456}") + private final Map coordinates; - public static RouteDetailDTO of(double dist, DirectionType directionType) { - return new RouteDetailDTO(dist, directionType); + public static RouteDetailDTO of(double dist, DirectionType directionType, Map coordinates) { + return new RouteDetailDTO(dist, directionType, coordinates); } } diff --git a/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteInfoDTO.java b/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteInfoDTO.java index fdaa155..505e8c1 100644 --- a/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteInfoDTO.java +++ b/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/dto/RouteInfoDTO.java @@ -1,5 +1,6 @@ package com.softeer5.uniro_backend.route.dto; +import com.softeer5.uniro_backend.node.entity.Node; import com.softeer5.uniro_backend.route.entity.CautionType; import com.softeer5.uniro_backend.route.entity.Route; import io.swagger.v3.oas.annotations.media.Schema; @@ -22,10 +23,10 @@ public class RouteInfoDTO { @Schema(description = "위험 요소 타입 리스트", example = "[\"SLOPE\", \"STAIRS\"]") private final Set cautionFactors; - public static RouteInfoDTO of(Route route) { + public static RouteInfoDTO of(Route route, Node node1, Node node2) { return new RouteInfoDTO(route.getId(), - route.getNode1().getXY(), - route.getNode2().getXY(), + node1.getXY(), + node2.getXY(), route.getCautionFactors()); } } diff --git a/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/service/RouteCalculationService.java b/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/service/RouteCalculationService.java index eb5428d..7063547 100644 --- a/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/service/RouteCalculationService.java +++ b/uniro_backend/src/main/java/com/softeer5/uniro_backend/route/service/RouteCalculationService.java @@ -68,7 +68,7 @@ public FastestRouteResDTO calculateFastestRoute(Long univId, Long startNodeId, L double totalDistance = 0.0; List routeInfoDTOS = new ArrayList<>(); - + Node currentNode = startNode; // 외부 변수를 수정해야하기 때문에 for-loop문 사용 for (Route route : shortestRoutes) { totalCost += route.getCost(); @@ -78,7 +78,15 @@ public FastestRouteResDTO calculateFastestRoute(Long univId, Long startNodeId, L hasCaution = true; } - routeInfoDTOS.add(RouteInfoDTO.of(route)); + Node firstNode = route.getNode1(); + Node secondNode = route.getNode2(); + if(currentNode.getId().equals(secondNode.getId())){ + Node temp = firstNode; + firstNode = secondNode; + secondNode = temp; + } + + routeInfoDTOS.add(RouteInfoDTO.of(route, firstNode, secondNode)); } List details = getRouteDetail(startNode, endNode, shortestRoutes); @@ -191,6 +199,8 @@ private List getRouteDetail(Node startNode, Node endNode, List details = new ArrayList<>(); double accumulatedDistance = 0.0; Node now = startNode; + Map checkPointNodeCoordinates = startNode.getXY(); + DirectionType checkPointType = DirectionType.STRAIGHT; // 길찾기 결과 상세정보 정리 for(int i=0;i getRouteDetail(Node startNode, Node endNode, List getRouteDetail(Node startNode, Node endNode, List getRouteDetail(Node startNode, Node endNode, List getCenter(Node n1, Node n2){ + return Map.of("lat", (n1.getCoordinates().getY() + n2.getCoordinates().getY())/2 + , "lng", (n1.getCoordinates().getX() + n2.getCoordinates().getX())/2); + } + }