Files
GhiVideo/docs/history/2026-06-29_1212_측점검색-순환점프+입력유지.md
T
b23042andClaude Opus 4.8 e9052143d7 feat: 스테이션바 측점 정확도 개선 + 영상 컨트롤 UI 통합 + 종합 기술문서
스테이션바/측점(체이니지)
- 역 재진입 마커 누락 수정: 측점기준 탐지에 좌표근접(pxPassesTo) 합집합 보강(중복 24px 제거)
- kmExists 판정: 좌표 반경만으로 잡힌 통과는 측점값 라벨/검색에서 제외(마커 동그라미는 유지)
- 측점값 라벨 겹침 숨김(좌측 우선), 동일항목 브래킷 클러스터
- 측점 검색 순환(통과방향 다음→끝에서 처음), 마커 기준 후보 산출, 입력값 유지/blur 삭제
- 연속 체이니지 수직투영 유틸 분리(client/src/utils/chainage.ts), Minimap 컴포넌트 추가

영상 컨트롤 UI
- 선형/드론궤적/좌측패널 토글을 재생바로 통합(settingsStore 공유·persist)
- 드론 GPS·고도 HUD 상시 표시, 경로표고·투명도 항상 노출, 겹침제외 버튼 숨김
- 재생바 요소 재배치(좌측패널→선형→드론궤적→드론위치정보→시설등급), 활성색 amber 통일

문서/도구
- 종합 기술명세서(인계+특허 기초) md/html/pdf 3종, UI개선 보고서 3종
- md→html→pdf 변환 스크립트(scripts/md2docs.sh) + 스타일(docs/assets/report.css)
- 작업 히스토리 다수 추가(docs/history/)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 14:56:27 +09:00

1.7 KiB

측점 검색 순환 점프 + 입력값 유지/블러삭제

소요 시간: 약 12분 Context 사용량: input ~360k / output ~24k tokens

결론

측점값이 여러 곳(여러 통과)에 존재할 때, 측점 검색을 통과방향 순환(find-next) 으로 개선. Enter 반복으로 다음 통과로 이동, 끝에서 처음으로 순환. 입력값은 Enter 후 유지하고 blur 시 삭제.

변경 내용

  • client/src/stationbar/StationBar.tsxhandleJumpToMileage 재작성
    • 입력 측점의 '모든 통과'를 허용오차(stationTolerance, 기본 20m) 내 연속구간=1통과로 묶어 시간 오름차순 수집.
    • 기준 시각(baseT)에서 통과방향(시간 증가) 다음 통과로 이동, 없으면 passes[0] 으로 순환.
    • jumpRef(km,time)로 연속 검색 판정: 같은 측점이고 커서가 직전 점프 위치 그대로(|Δ|<0.1s)일 때만 연속(다음 통과). 재생/클릭으로 커서 이동했거나 다른 측점이면 현재 커서(라이브)에서 새로 시작.
    • 라이브 시각은 timeRef?.current ?? currentTime. 커버 범위 밖(±20m) 입력은 무시(기존 유지).
    • 허용오차 내 통과가 없으면 전역 최근접 1개로 폴백.
  • client/src/stationbar/components/PlaybackControls/PlaybackControls.tsx
    • Enter 시 setQuery('') 제거 → 입력값 유지(같은 값 재Enter 로 순환).
    • input onBlur → 입력값 삭제(다른 곳 클릭 시 언셀렉트).

검증

  • tsc + vite build 통과(node 20). client/dist 재빌드(12:12).

참고

  • 순환 순서는 '시간(이동거리축 진행) 오름차순' = 화면상 좌→우.
  • 향후 입력창 옆 'n/m' 위치 표시·매칭 하이라이트를 추가하면 인지성 더 향상.