웹 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();
};
실행 결과는 다음과 같습니다.
