웹 UI 라이브러리인 GWC에서 제공하는 Select 컴포넌트의 선택 항목을 사용자 정의 그리기로 정의하기 위한 예제 코드입니다.
먼저 DOM 구성은 다음과 같습니다.
그리고 CSS 구성은 다음과 같구요.
.center { display: flex; width: 100%; height: 100%; justify-content: center; align-items: center; } .panel { display: flex; gap: 2em; flex-direction: column; justify-content: center; align-items: center; } #select { width: 200px; }
js 코드는 다음과 같습니다.
window.onload = () => {
select.setCustomDrawingMethod([
{v: "4 4"}, // 사용자 정의 아이템을 시각화하기 위한 임의의 데이터
{v: "8 4"},
{v: "8 8"},
{v: "16 8"},
{v: "16 4"}
], (item) => {
const domSVG = document.createElementNS("http://www.w3.org/2000/svg", "svg");
domSVG.setAttribute("width", "100px");
domSVG.setAttribute("height", "20px");
const svgLine = document.createElementNS("http://www.w3.org/2000/svg", "line");
svgLine.setAttribute("x1", 4);
svgLine.setAttribute("y1", 10);
svgLine.setAttribute("x2", 96);
svgLine.setAttribute("y2", 10);
svgLine.style = `stroke:white;stroke-width:4;stroke-dasharray:${item.v}`;
domSVG.appendChild(svgLine);
return domSVG;
});
select.selectedIndex = 1;
select.addEventListener("change", (event) => {
const select = event.target;
label.content = `"${select.value.v}"(으)로 변경되었습니다.`;
});
button.addEventListener("click", () => {
gwcMessage(`select의 값: ${select.value.v}`);
});
GeoServiceWebComponentManager.instance.update();
};
실행 결과는 다음과 같습니다.