diff --git a/apps/sn/app/(map-layout)/map/page.tsx b/apps/sn/app/(map-layout)/map/page.tsx index 6105bc818..f7ceeb205 100644 --- a/apps/sn/app/(map-layout)/map/page.tsx +++ b/apps/sn/app/(map-layout)/map/page.tsx @@ -40,6 +40,7 @@ const Map = () => { const [isOpen, setIsOpen] = useState(false); // 팝업 열기/닫기 상태 const [isSearchModalOpen, setIsSearchModalOpen] = useState(false); // SearchModal 열림 상태 const [featureData, setFeatureData] = useState(null); // 선택된 피쳐 데이터 + const [showWaterDepth, setShowWaterDepth] = useState(false); // WaterDepth 표시 여부 useEffect(() => { @@ -118,6 +119,28 @@ const Map = () => { setIsSearchModalOpen(false); }; + // WaterDepth 표시 여부를 결정하는 함수 + const handleWaterDepthVisibility = useCallback((checkedIds: string[], checkedNodesData: any[]) => { + // 침수 관련 레이어 ID들 (실제 데이터에 맞게 수정 필요) + const waterDepthLayerTypes = [ + 'tb_ms_flood_dngr_map', // 침수위험지도 + 'tb_ms_sbmrg_dngr_map' // 도시침수지도 + ]; + + // 체크된 레이어 중에 침수 관련 레이어가 있는지 확인 + const hasWaterDepthLayer = checkedNodesData.some(node => + waterDepthLayerTypes.includes(node.data?.lyrTyNm) + ); + + setShowWaterDepth(hasWaterDepthLayer); + }, []); + + // 체크된 레이어 변경 처리 함수 + const handleCheckedLayersChange = useCallback((checkedIds: string[], checkedNodesData: any[]) => { + // WaterDepth 표시 여부 결정 + handleWaterDepthVisibility(checkedIds, checkedNodesData); + }, [handleWaterDepthVisibility]); + return (
@@ -135,9 +158,9 @@ const Map = () => { setIsSearchModalOpen={setIsSearchModalOpen} isOpen={isOpen} isSearchModalOpen={isSearchModalOpen} - onCheckedLayersChange={undefined} + onCheckedLayersChange={handleCheckedLayersChange} searchBar={SearchBar} - // waterDepth={WaterDepth} + waterDepth={showWaterDepth ? WaterDepth : undefined} />
); diff --git a/apps/sn/app/(map-layout)/map/waterDepth/waterDepth.tsx b/apps/sn/app/(map-layout)/map/waterDepth/waterDepth.tsx index 39e375a4b..a69587aa2 100644 --- a/apps/sn/app/(map-layout)/map/waterDepth/waterDepth.tsx +++ b/apps/sn/app/(map-layout)/map/waterDepth/waterDepth.tsx @@ -3,18 +3,28 @@ import React, { useRef, useEffect, useState } from "react"; import { Label } from "@common/components/ui/label"; -export function WaterDepth({ onClose }: { onClose?: () => void }) { +interface WaterDepthProps { + onClose?: () => void; +} + +export function WaterDepth({ + onClose, +}: WaterDepthProps) { const [isPlaying, setIsPlaying] = useState(false); + const handlePlayToggle = () => { + setIsPlaying((prev) => !prev); + }; + return ( <> -
+
-
+