지도 라벨 배치기
GeoJSON Point, LineString, Polygon에 이름과 중요도를 입력하면 실제 브라우저 글자 폭·높이를 재고 후보 위치를 탐색합니다. 우선순위가 높은 이름부터 놓되 회전된 글자 상자, 지도 경계, 금지 폴리곤과 다른 라벨의 겹침을 검사합니다. 배치하지 못한 이름도 이유와 충돌 상대를 남깁니다. 좌표와 결과는 브라우저 안에 머뭅니다.
주요 기능
- Canvas TextMetrics로 실측한 Arial 글자 폭·높이와 회전된 상자 충돌 검사
- 점 8방향·선 방향·폴리곤 내부 후보를 우선순위 순서로 탐색
- 금지 폴리곤과 내부 홀, 지도 화면 밖 후보를 제외
- 배치 불가 라벨별 이유와 충돌 상대 ID를 기록
- SVG 지도·위치 GeoJSON·JSON 충돌 보고서 로컬 저장
- WGS 84 경위도, 라벨 64개·금지 구역 16개·좌표 1,200개 제한
사용 방법
- 지명은 properties.name, 중요도는 0~100의 properties.priority로 입력합니다. 제외 구역은 properties.kind=forbidden인 Polygon입니다.
- 예제를 열거나 GeoJSON 파일을 읽고 화면의 서·남·동·북 경계, 크기와 기본 글자 크기를 조절합니다.
- 라벨 배치를 실행하고 지도·배치 수·배치 불가 사유·대략적인 축척을 확인합니다.
- SVG 지도와 위치 GeoJSON, 충돌 JSON 보고서를 각각 저장합니다.
활용 예시
- 작은 지도의 도시·역 지명 겹침 줄이기
- 하천 방향을 따라 읽기 쉬운 라벨 배치
- 공원 안쪽 지명과 제외 구역 동시 검토
- 인쇄 전 배치 실패 목록 검토
자주 묻는 질문
지도 라벨이 모두 배치되나요?
아닙니다. 중요도 높은 라벨을 먼저 고정하는 결정론적 탐욕 배치입니다. 후보가 모두 지도 밖·금지 영역·충돌 위치이면 배치하지 않고 이유를 보고합니다. 전체 최적해는 보장하지 않습니다.
선이나 폴리곤 지명은 어떻게 놓나요?
선은 글자 폭보다 긴 구간을 골라 방향에 맞게 회전하며 거꾸로 읽히지 않도록 각도를 제한합니다. 폴리곤은 내부 후보를 탐색하고 글자 상자 전체가 외곽 안과 홀 밖에 있을 때만 놓습니다.
축척과 정확도는 어느 정도인가요?
축척은 화면 중심 위도의 구면 거리, 96dpi를 가정한 근사값입니다. 배치는 경위도를 직사각형 화면에 선형 투영합니다. 날짜변경선 횡단, 극지, 넓은 범위, 측량 용도에는 적합하지 않습니다.
내보낸 SVG에서 글꼴이 달라질 수 있나요?
예. 현재 브라우저의 Arial/sans-serif 실측치로 배치합니다. 다른 SVG 뷰어나 시스템의 대체 글꼴은 모양이 달라져 충돌할 수 있으니 최종 출력 환경에서 다시 확인하세요.
좌표나 파일을 서버에 보내나요?
아닙니다. 편집·글자 측정·지도와 파일 생성이 현재 브라우저 탭에서만 일어납니다. 외부 지도 타일도 불러오지 않습니다.
개인정보 안내
GeoJSON과 좌표는 현재 브라우저 탭에서만 처리합니다. 서버 전송·외부 지도 타일·자동 저장은 없습니다.
댓글과 질문