콘텐츠로 이동

GIS 전역 설정~

/geo/setting 페이지에서 시스템 전체에 적용되는 GIS 기본값을 설정합니다. 설정은 geo_setting 테이블의 싱글턴 레코드로 저장됩니다.


기본 시작 위치~

지도 위젯과 디자인 도구가 처음 열릴 때 표시할 기본 위치입니다.

항목 기본값 설명
위도 (Latitude) 37.5665 서울 중심 좌표
경도 (Longitude) 126.9780 서울 중심 좌표
줌 레벨 (Zoom Level) 12 초기 줌 (작을수록 넓은 범위, 클수록 가까이)

지도에서 원하는 위치와 줌으로 이동한 뒤 현재 화면(Current View) 행의 위치 가져오기 버튼을 누르면 세 항목이 현재 지도 화면 값으로 채워집니다.


디자인 테마 색상~

디자인 도구와 지도 위젯에서 사용할 계층별 색상입니다.

계층 의미
Site 부지 경계
Zone 구역 경계
Facility 시설 건물
Equipment 설비
Device AoT 장치 마커
Panel Background 속성 패널 배경

각 행에는 색상 피커가 있습니다. 한 번도 저장하지 않은 색은 지금 실제로 쓰이는 색(전역 기본값)을 보여 주며 미설정 상태로 남고, 직접 바꿀 때만 저장됩니다. 패널 불투명도 슬라이더(0~100%, 5단위) 하나가 속성 패널 배경에 적용됩니다.


지도 동작 설정~

줌 설정~

항목 기본값 설명
Max Zoom 25 지도 최대 줌 레벨 (1~30 입력 가능)
Equipment Hide Zoom 15 이 줌 레벨 미만에서 Equipment 항목 숨김 (1~25 입력 가능)

Equipment Hide Zoom 설정은 넓은 지역을 줌아웃할 때 수많은 설비 항목이 지도를 가리는 것을 방지합니다. 줌이 15 미만이 되면 배관, 연결점, 살수 범위, 3D 시설 모형이 자동으로 숨겨집니다. AoT 장치 마커는 이 설정과 무관하게 모든 줌에서 계속 보입니다.

줌 방식~

항목 기본값 설명
Digital Zoom On 타일 해상도를 초과한 후에도 CSS 배율로 줌 지속
Smooth Zoom On 핀치 줌 시 부드러운 보간

성능 및 렌더링~

항목 기본값 설명
Tile Fade Animation On 타일 로드 시 페이드인 애니메이션
Serve MapLibre Locally On MapLibre GL 라이브러리를 CDN 대신 로컬 파일로 제공. 끄면 CDN 에서 라이브러리를 받아옵니다
Prefer Canvas Rendering Off Canvas 렌더러 우선 사용 (SVG 대신, Leaflet 모드만 해당)

폴리곤 표시 한도~

지도 설정과 함께 보관되는 상한값입니다. 저장되고 여기서 수정할 수 있지만, 현재 지도 그리기에는 아직 반영되지 않습니다.

항목 기본값
Max Site Polygons 1000
Max Zone Polygons 1000
Max Device Polygons 1000

단위 설정~

시설 공학 계산 및 치수 입력에 사용할 길이 단위를 선택합니다.

단위 코드 표시
m 미터 (기본값)
cm 센티미터
mm 밀리미터
ft 피트
in 인치

API~

GET /api/geo/settings

현재 전역 설정을 JSON으로 반환합니다. 설정 편집 권한이 필요하며, 권한이 없으면 요청이 거부됩니다.

응답은 {"ok": true, "saved_state": { ... }, "geo_layers": [...], "search_inputs": [...], "search_provider": "..."} 형태입니다. saved_state에는 저장된 설정이 담기며(기본 시작 줌은 zoom 키로 돌아옵니다), 저장된 지도 제공자 키도 함께 포함됩니다.

POST /api/geo/settings
Content-Type: application/json

{
  "default_lat": 37.5665,
  "default_lng": 126.9780,
  "default_zoom": 12,
  "max_zoom": 25,
  "equipment_cull_zoom": 15,
  "digital_zoom": true,
  "smooth_zoom": true,
  "tile_fade_animation": true,
  "maplibre_local_serving": false,
  "prefer_canvas": false,
  "search_provider": "",
  "max_polygons_site": 1000,
  "max_polygons_zone": 1000,
  "max_polygons_device": 1000,
  "theme_site": "#2563eb",
  "theme_zone": "#16a34a",
  "theme_facility": "#ea580c",
  "theme_equipment": "#6b7280",
  "theme_device": "#dc2626",
  "theme_panel_bg": "#ffffff",
  "theme_panel_opacity": 90
}

모든 키는 선택입니다 — 보내지 않은 키는 저장된 값이 그대로 유지되고, 허용 목록에 없는 키는 조용히 무시됩니다. JSON 외에 폼 인코딩 본문도 받습니다. 테마 값은 중첩 객체가 아니라 평평한 theme_* 키로 보내며, 디자인 드로어의 표시 토글도 같은 theme_* 계열로 저장됩니다. search_provider가 비어 있으면 "지도 설정을 따름"입니다. 저장에 성공하면 {"ok": true, "message": "Settings Saved"}를 돌려주고, 저장에도 설정 편집 권한이 필요합니다.

길이 단위는 이 엔드포인트에 포함되지 않고 별도 엔드포인트를 씁니다.

GET /api/geo/settings/length_unit
PUT /api/geo/settings/length_unit
Content-Type: application/json

{ "length_unit": "m" }

GET은 현재 단위와 지원 단위 목록을 함께 반환하고, PUT은 목록에 없는 값을 거부합니다.


관련 페이지~