GhiVideo 소스 복제 — v4 작업 시작 기준
기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제. (node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
# 구글 새 KML 형식 파싱 + 스테이션바 구조물 클릭 팝업
|
||||
|
||||
**날짜**: 2026-06-24
|
||||
**수정 파일**: `client/src/utils/geoData.ts`, `client/src/stationbar/StationBar.tsx`,
|
||||
`client/src/stationbar/components/Timeline/Timeline.tsx`
|
||||
**관련**: [2026-06-24_1630_KMZ-KAKAO_RAIL-스테이션바라우팅.md](2026-06-24_1630_KMZ-KAKAO_RAIL-스테이션바라우팅.md)
|
||||
|
||||
## 증상
|
||||
- 회덕화물역 속성이 위도/경도만 보임(=props 비어 no-props 폴백). 영상에 남아있음(스테이션바로 안 감).
|
||||
- 구글에서 다시 받은 KML의 형식이 달라짐.
|
||||
|
||||
## 원인 (새 KML 형식)
|
||||
구글어스에서 재저장된 Placemark description 표가 변형됨:
|
||||
- 옛: `<b>source</b></td><td>VWORLD_ROAD</td>`
|
||||
- 새: `<table><tbody>…<b>source</b><br></td><td>KAKAO_RAIL<br></td>` (`<tbody>`·`</b>` 뒤 `<br>`·`>` 엔티티)
|
||||
기존 정규식 `<b>키</b>\s*</td>…` 이 `</b>` 뒤 `<br>` 때문에 매칭 실패 → props 빈값 →
|
||||
source 못 읽어 KAKAO_RAIL 라우팅도 실패(영상에 남음).
|
||||
또 사용자는 .kmz 가 아니라 **bare `doc.kml`** 을 폴더에 받음.
|
||||
|
||||
## 조치
|
||||
### 1) description 파싱을 행/셀 단위로 견고화 (`geoData.ts`)
|
||||
`<tr>` 안 두 `<td>` 셀에서 태그 제거+엔티티 디코드(`stripHtml`) → (키,값). 옛/새 형식 모두 처리.
|
||||
→ 회덕화물역 17개 속성 전부 추출(source=KAKAO_RAIL 포함) 검증. KAKAO_RAIL→스테이션바 라우팅 정상화.
|
||||
|
||||
### 2) bare .kml 지원 (`parseKmz`)
|
||||
폴더 루트의 **`.kml` 우선**(구글 직접 다운로드, UTF-8 `await file.text()`), 없으면 `.kmz`(zip) 해제.
|
||||
|
||||
### 3) 스테이션바 구조물 클릭 팝업 (`StationBar.tsx`·`Timeline.tsx`)
|
||||
역사(회덕화물역)는 스테이션바 원형 아이콘만 있어 속성이 안 보였음 →
|
||||
- `StructMark` 에 `props` 추가(구조물 마크 빌드 시 `s.props` 전달).
|
||||
- Timeline: 구조물 마커 위 클릭 핫스팟(zIndex 21, seekArea 위) → 클릭 시 **속성 팝업**.
|
||||
팝업은 클릭 좌표 기준 `position:fixed`(트랙 래퍼 transform 영향 회피), 배경 클릭 시 닫힘.
|
||||
- 역사/교량/터널 모두 적용(구교는 영상에서 처리).
|
||||
|
||||
## 결과
|
||||
- 회덕화물역: KAKAO_RAIL → 스테이션바(원형) + 클릭 시 전체 KML 속성 팝업.
|
||||
- 새 형식 KML(또는 .kmz) 모두 속성 정상 추출.
|
||||
|
||||
## 검증
|
||||
- `npm run build -w client` (node20) 통과. Python으로 새 형식 행/셀 파싱 → 17속성 추출 확인.
|
||||
|
||||
**소요 시간**: 약 25분
|
||||
**Context 사용량**: input ~820k / output ~12k tokens
|
||||
Reference in New Issue
Block a user