ship-gis/src/tracking/utils/shipIconUtil.js
HeungTak Lee e74688a969 feat: 항적조회 기능 구현
- tracking 패키지 TS→JS 변환 (stores, services, components, hooks, utils)
- 모달 항적조회 + 우클릭 항적조회
- 라이브 연결선 (PathStyleExtension dash + 1초 인터벌)
- TrackQueryModal, TrackQueryViewer, GlobalTrackQueryViewer
- 항적 레이어 (trackLayer.js)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 06:36:57 +09:00

76 lines
2.0 KiB
JavaScript

/**
* 선박 아이콘 유틸리티
*
* 선박 종류 코드와 항해/정박 상태에 따라 적절한 아이콘을 제공
*/
import { ICON_MAPPING_KIND_MOVING, ICON_MAPPING_KIND_STOPPING } from '../../types/constants';
/**
* 선박 종류 코드와 항해 상태로 아이콘 이름 가져오기
*
* @param {string} shipKindCode 선박 종류 코드 (000020-000028)
* @param {boolean} [isMoving=true] 항해 중 여부
* @returns {string} 아이콘 매핑 키
*/
export function getShipIconUrl(shipKindCode, isMoving = true) {
const iconMapping = isMoving
? ICON_MAPPING_KIND_MOVING
: ICON_MAPPING_KIND_STOPPING;
return iconMapping[shipKindCode] || iconMapping['000027'];
}
/**
* 속도 기반 선박 아이콘 가져오기
* 0.5 knots를 기준으로 항해 중 여부를 결정
*
* @param {string} shipKindCode 선박 종류 코드
* @param {number} [speed=0] 선박 속도 (knots)
* @returns {string} 아이콘 매핑 키
*/
export function getV2ShipIconUrl(shipKindCode, speed = 0) {
const isMoving = speed > 0.5;
return getShipIconUrl(shipKindCode, isMoving);
}
/**
* 선박 종류 코드를 한글 이름으로 변환
*
* @param {string} shipKindCode 선박 종류 코드
* @returns {string} 선박 타입 한글 이름
*/
export function getShipKindName(shipKindCode) {
const kindNames = {
'000020': '어선',
'000021': '함정',
'000022': '여객선',
'000023': '화물선',
'000024': '유조선',
'000025': '관공선',
'000027': '기타',
'000028': '부이',
};
return kindNames[shipKindCode] || '기타';
}
/**
* 신호 소스 코드를 이름으로 변환
*
* @param {string} signalSourceCode 신호 소스 코드
* @returns {string} 신호 소스 이름
*/
export function getSignalSourceName(signalSourceCode) {
const sourceNames = {
'000001': 'AIS',
'000002': 'E-NAV',
'000003': 'V-PASS',
'000004': 'VTS-AIS',
'000005': 'VTS-RADAR',
'000016': 'D-MF/HF',
};
return sourceNames[signalSourceCode] || signalSourceCode;
}