MX On Cloud map widgets
Map 위젯은 지리 타일 지도에 엔티티의 실시간 위치를 표시합니다. 차량, 센서, 자산 등 위도와 경도를 보내는 엔티티를 추적할 때 씁니다. 현재 위치, 범위 구역, 지리 경계를 대화형 지도 하나에 모두 보여 줍니다.
주요 기능
섹션 제목: “주요 기능”Map은 MX On Cloud의 지도 위젯 네 가지 중 하나이며, 위젯마다 쓰임새가 다릅니다:
| 위젯 | 주요 용도 |
|---|---|
| Map | 지리 타일 지도에 현재 엔티티 위치를 실시간으로 표시합니다. |
| Image Map | 사용자 지정 배경 이미지를 씁니다. 평면도, 주차장, 실내 배치도에 알맞습니다. |
| Trip Map | 타임라인 제어를 모두 갖춘 경로 애니메이션 재생. 움직임을 단계별로 분석할 때 알맞습니다. |
| Route Map | 과거 경로 전체를 고정된 경로 선으로 그립니다. 전체 이동을 한눈에 검토할 때 알맞습니다. |
Map만의 특징:
- 엔티티 속성이나 텔레메트리에서 위도와 경도를 읽어 마커를 실시간으로 놓습니다.
- 여러 지도 공급자와 전환할 수 있는 레이어를 지원합니다: OpenStreet, Google, HERE, Tencent, 사용자 지정.
- 마커, 다각형, 원, Polylines 오버레이를 한 지도에 함께 표시할 수 있습니다.
- 대화형 편집 도구가 있어 위젯에서 바로 마커, 다각형, 원을 놓고, 옮기고, 지울 수 있습니다.
위젯 추가
섹션 제목: “위젯 추가”- 대시보드를 열고 수정 모드로 바꿉니다.
- 위쪽의 위젯 추가를 클릭하거나, 화면 가운데의 위젯 추가 아이콘을 클릭합니다.
- Maps 위젯 번들을 엽니다.
- Map을 선택합니다.
- 위젯 설정을 마친 다음 추가를 클릭합니다.
지도 유형
섹션 제목: “지도 유형”지도 배경으로 쓸 타일 레이어를 하나 이상 설정합니다:
- 라벨: 위젯의 레이어 전환기에 표시되는 이름.
- 공급자: OpenStreet, Google, HERE, Tencent, 사용자 지정(타일 서버 URL 입력).
- 레이어: 타일 스타일 — Mapnik, HOT, WorldStreetMap, WorldTopoMap, WorldImagery, Roadmap 등. 쓸 수 있는 옵션은 공급자마다 다릅니다.
- 참조 레이어: 라벨이 붙은 지도 요소(도로, 경계)를 담은 투명 오버레이. 레이어의 톱니바퀴 아이콘 메뉴에서 설정합니다.
전환할 수 있는 레이어를 더 설정하려면 레이어 추가를 클릭합니다. 사용자는 위젯의 레이어 아이콘 버튼으로 레이어를 바꿉니다.
오버레이
섹션 제목: “오버레이”오버레이는 지도에 그려지는 시각 요소입니다. 오버레이 유형마다 자체 데이터 소스에 연결되고 따로 설정합니다.
마커는 개별 엔티티(차량, 센서, 자산)를 나타내며, 지리 좌표에 아이콘으로 표시됩니다.
마커 추가하기: 마커 추가를 클릭하고 데이터 소스를 선택한 다음 좌표 키를 정하고 저장을 클릭합니다.
데이터 소스
위치 데이터를 보내는 엔티티를 선택합니다: 기능, 장치, 개체(엔티티 별칭). 필터를 적용해 범위를 좁힙니다.
키
- 위도 키: 위도가 담긴 속성이나 텔레메트리 키(기본값:
latitude). - 경도 키: 경도가 담긴 속성이나 텔레메트리 키(기본값:
longitude). - 추가 데이터 키: 라벨, 툴팁, 색상 함수에 쓰는 추가 키(예:
temperature,status,active).
모양 — 마커
표시 모드 세 가지:
- 도형: 기본 제공 도형을 고르고 크기(px)와 색상을 정합니다. 텔레메트리 값에 따라 마커 색을 동적으로 바꾸려면 색상 함수(JavaScript)를 씁니다.
- 아이콘: 기본 제공 아이콘을 고르고 크기와 색상을 정합니다. 값 범위마다 색상을 정하려면 범위 색상 규칙을 씁니다.
- 이미지: 이미지 URL을 넣거나
{ url, size, offset }을 돌려주는 마커 이미지 함수를 씁니다.
마커 오프셋 — 기준점 위치를 미세 조정합니다(가로, 세로, 0–1 범위).
마커 회전 — 이동 방향을 반영해 마커 아이콘을 돌립니다. 기본 방향을 조정하려면 오프셋 각도(도)를 정합니다.
모양 — 라벨
마커 위에 표시되는 글:
- 패턴(기본값):
${entityName},${entityLabel}같은 템플릿 변수나 데이터 키를 씁니다. - 함수: 데이터 값에 따라 HTML 문자열을 돌려줍니다.
모양 — 툴팁
마커를 조작하면 나타나는 팝업:
- 패턴 / 함수: 내용을 템플릿이나 JavaScript 함수로 정합니다.
- 툴팁 트리거: 클릭 시 툴팁 표시 또는 호버 시 툴팁 표시.
- 툴팁 자동 닫기: 지도의 다른 곳을 클릭하면 닫습니다.
- 툴팁 오프셋: 가로·세로 위치 조정.
- 태그 동작:
<link-act name='action-name'>Label</link-act>로 툴팁 안에 이름이 있는 동작 링크를 추가합니다. 링크를 클릭하면 설정한 위젯 동작이 실행됩니다.
동작
클릭 시 — 마커를 클릭하면 실행되는 동작. 쓸 수 있는 유형: 동작 안 함, 새로운 대시보드 상태 탐색, 현재 대시보드 상태 업데이트, 다른 대시보드 탐색, Custom action, Custom action (with HTML template), 모바일 액션, URL 열기.
그룹
그룹 이름을 지정합니다. 그룹은 위젯의 그룹 패널에 나타나며, 그룹 전체를 한 번에 표시하거나 숨길 수 있습니다.
마커 편집
위젯에서 바로 쓰는 대화형 배치·편집 도구를 켭니다:
- 편집 도구: 추가, 이동, 제거 도구를 켭니다.
- 위치 저장 속성 범위: 서버 또는 공유. 마커를 놓거나 옮길 때 좌표를 저장할 곳을 정합니다.
- 정밀한 그리기를 위해 다른 꼭짓점에 스냅 사용: 마커를 가까운 다각형 꼭짓점이나 원 중심에 붙입니다.
지도 마커 클러스터링 사용
낮은 확대 수준에서 가까운 마커를 클러스터 아이콘 하나로 묶습니다. 클러스터 아이콘에는 안에 든 항목 수가 표시됩니다. 마커가 많을 때 읽기 쉬워집니다.
다각형은 지리 영역(지오펜스, 서비스 구역, 제한 구역 등 강조하거나 엔티티 데이터와 연결할 영역)을 정합니다.
다각형 추가하기: 다각형 추가를 클릭하고 데이터 소스를 선택한 다음 다각형 키를 정하고 저장을 클릭합니다.
데이터 소스
기능, 장치, 개체(별칭). 필요하면 필터를 적용합니다.
키
- 다각형 키: 좌표 배열이 담긴 속성 키(기본값:
perimeter). - 추가 데이터 키: 라벨, 툴팁, 함수에 쓸 추가 키.
좌표 형식:
[[lat1,lng1],[lat2,lng2],...,[latN,lngN]]예시:
[[53.37545,-6.31259],[53.37554,-6.31256],[53.37537,-6.31128],[53.37547,-6.31124]]모양 — 채우기
다각형 안쪽을 그리는 방식:
- 색상: 단색 채우기(고정 또는 데이터 기반).
- 줄무늬: 대각선 빗금 무늬. 구역이나 제한 구역을 나타낼 때 유용합니다.
- 이미지: 사용자 지정 이미지 채우기.
모양 — 선
테두리 선. 두께(px)와 색상을 정합니다.
모양 — 라벨
다각형 가운데에 표시되는 글. 패턴 또는 함수.
모양 — 툴팁
클릭하거나 마우스를 올리면 나타나는 팝업. 패턴 또는 함수. 트리거, 자동 닫기, 태그 동작을 설정합니다.
동작
클릭 시 동작. 마커와 같은 동작 유형을 씁니다.
그룹
가시성을 켜고 끌 수 있도록 그룹 이름을 지정합니다.
다각형 편집
대화형 그리기·편집 도구:
- 편집 도구: 추가, 편집(꼭짓점 모양 바꾸기), 이동, 회전, 자르기, 제거 도구를 켭니다.
- 위치 저장 속성 범위: 좌표를 저장할 속성 범위(서버 또는 공유).
- 정밀한 그리기를 위해 다른 꼭짓점에 스냅 사용.
원은 중심 좌표와 반지름으로 정하는 둥근 지리 영역(범위 구역, 감지 범위, 지오펜스 경계)을 나타냅니다.
원 추가하기: 원 추가를 클릭하고 데이터 소스를 선택한 다음 원 키를 정하고 저장을 클릭합니다.
데이터 소스
기능, 장치, 개체(별칭). 필요하면 필터를 적용합니다.
키
- 원 키: 원 도형 정보가 담긴 속성 키(기본값:
perimeter). - 추가 데이터 키: 라벨, 툴팁, 함수에 쓸 추가 키.
좌표 형식:
{"latitude": value, "longitude": value, "radius": value}예시:
{"latitude": 53.4791, "longitude": -6.5172, "radius": 137.74}모양 — 채우기
색상, 줄무늬, 이미지 — 다각형과 같은 옵션입니다.
모양 — 선
테두리 선 두께와 색상.
모양 — 라벨
원 가운데에 표시되는 글. 패턴 또는 함수.
모양 — 툴팁
클릭하거나 마우스를 올리면 나타나는 팝업. 패턴 또는 함수. 트리거, 자동 닫기, 태그 동작을 설정합니다.
동작
클릭 시 동작. 마커와 같은 동작 유형을 씁니다.
그룹
가시성을 켜고 끌 수 있도록 그룹 이름을 지정합니다.
원 편집
대화형 그리기·편집 도구:
- 편집 도구: 추가, 편집(반지름 크기 조정), 이동, 제거 도구를 켭니다.
- 위치 저장 속성 범위: 서버 또는 공유.
- 정밀한 그리기를 위해 다른 꼭짓점에 스냅 사용.
Polylines는 속성 좌표 배열로 저장한 고정 경로를 표시합니다(예: 정류장이 있는 고정 버스 노선, 지하철 노선, 배관, 서비스 통로). 점을 보여 주는 마커와 달리, Polylines는 지도를 가로지르는 이어진 선을 그립니다.
Polyline 추가하기: Add polyline을 클릭하고 데이터 소스를 선택한 다음 Polyline 키를 정하고 저장을 클릭합니다.
데이터 소스
기능, 장치, 개체(별칭). 필요하면 필터를 적용합니다.
키
- Polyline key: 좌표 배열이 담긴 속성 키(기본값:
perimeter). - 추가 데이터 키: 라벨이나 툴팁에 쓸 추가 키.
좌표 형식:
[[lat1,lng1],[lat2,lng2],...,[latN,lngN]]모양 — 선
선 두께(px)와 색상.
모양 — 라벨
폴리라인을 따라 표시되는 글. 패턴 또는 함수.
모양 — 툴팁
클릭하거나 마우스를 올리면 나타나는 팝업. 패턴 또는 함수. 다음을 설정합니다:
- 툴팁 트리거: 클릭 시 또는 호버 시.
- 툴팁 자동 닫기.
- 태그 동작: 툴팁 안의 이름 있는 동작 링크.
동작
클릭 시 동작. 유형: 동작 안 함, 새로운 대시보드 상태 탐색, 현재 대시보드 상태 업데이트, 다른 대시보드 탐색, Custom action, Custom action (with HTML template), 모바일 액션, URL 열기.
그룹
가시성을 켜고 끌 수 있도록 그룹 이름을 지정합니다.
Edit polyline
대화형 편집 도구:
- 편집 도구: 추가, 편집, 이동, 제거 도구를 켭니다.
- 위치 저장 속성 범위: 좌표를 저장할 속성 범위(서버 또는 공유).
- 정밀한 그리기를 위해 다른 꼭짓점에 스냅 사용.
추가 데이터 소스
섹션 제목: “추가 데이터 소스”추가 데이터 소스는 지도에 직접 표시하지 않는 엔티티의 텔레메트리나 속성을 제공합니다. 오버레이 함수의 조건 로직에 씁니다(예: 관련 HMI 장치 데이터에 따라 색이 바뀌는 마커, 정보를 더한 툴팁, 계산한 표시 값).
- 소스: 엔티티 유형 — 기능, 장치, 개체 별명.
- 데이터 키: 엔티티에서 읽을 텔레메트리나 속성 키.
더 설정하려면 데이터 소스 추가를 클릭합니다.
지도 컨트롤
섹션 제목: “지도 컨트롤”위젯에서 쓸 대화형 컨트롤을 설정합니다.
위치 — 컨트롤 패널의 위치: 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래.
줌 동작 — 확대/축소 방법을 켭니다:
- 스크롤: 마우스 휠로 확대/축소.
- 더블 클릭: 두 번 클릭하면 확대.
- 컨트롤 버튼: 지도에 + / − 확대/축소 버튼을 표시합니다.
축척 — 거리 축척 막대를 표시합니다: 미터법(km / m) 또는 야드파운드법(mi / ft).
지도 작업 버튼
섹션 제목: “지도 작업 버튼”지도 위에 겹쳐 표시할 사용자 지정 버튼을 추가합니다. 버튼마다 클릭하면 미리 정한 동작을 실행합니다.
버튼마다 라벨, 아이콘, 색상, 동작이 있습니다.
쓸 수 있는 동작 유형: 동작 안 함, 새로운 대시보드 상태 탐색, 현재 대시보드 상태 업데이트, 다른 대시보드 탐색, Custom action, Custom action (with HTML template), 모바일 액션, URL 열기, 맵 항목 배치.
맵 항목 배치 동작을 쓰면 사용자가 지도의 한 점을 클릭해 그 위치에 새 엔티티를 만들 수 있습니다. 좌표는 엔티티 속성으로 자동 저장됩니다.
버튼을 더 설정하려면 버튼 추가를 클릭합니다.
동작 설정에 대한 자세한 내용은 위젯 동작을 참고하세요.
공통 지도 설정
섹션 제목: “공통 지도 설정”- 모든 마커를 포함하도록 지도 경계 맞춤: 불러올 때 보이는 지도 항목이 모두 들어오도록 확대 수준과 위치를 자동으로 맞춥니다. 기본으로 켜져 있습니다.
- 기본 지도 중심 위치: 자동 맞춤을 끄면 쓰는 처음 지도 중심 좌표(위도, 경도).
- 기본 지도 확대 수준: 처음 확대 수준. 값이 클수록 가까이 확대합니다(예: 국가 수준 7, 거리 수준 15).
- 로드할 엔터티 수 제한: 한 번에 불러올 엔티티 최대 수. 데이터가 많을 때 성능 문제를 막습니다(기본값: 16384).
- 제목: 위젯 헤더 라벨. 기본으로 꺼져 있습니다. 패턴 변수로
${entityName}이나${entityLabel}을 쓰거나 고정 문자열을 입력합니다. - 카드 아이콘: 헤더의 제목 옆에 표시되는 아이콘. 크기(px), 정렬, 색상을 정합니다.
카드 모양
섹션 제목: “카드 모양”- 배경: 카드 배경색.
- 카드 버튼 표시: 위젯 헤더의 Data export와 전체화면 버튼을 켜고 끕니다.
- 카드 모서리 반경: 모서리 둥글기(px, 기본값: 0px).
- 카드 패딩: 내용과 카드 가장자리 사이의 안쪽 간격(px, 기본값: 8px).
위젯 헤더 버튼 동작을 추가합니다. 위젯 헤더의 아이콘 버튼으로, 클릭하면 설정한 동작을 실행합니다.
쓸 수 있는 동작 유형과 설정은 위젯 동작을 참고하세요.
예시: 센서 추적 대시보드
섹션 제목: “예시: 센서 추적 대시보드”목표: 온습도 센서 두 개를 지도에 마커로 표시합니다. 마커마다 툴팁에 실시간 텔레메트리를 보여 주고, 센서 상세 상태로 이어지는 링크를 둡니다.
예시 내려받기
이 예시의 완성된 대시보드를 내려받아 내 인스턴스로 가져올 수 있습니다.
사전 준비
-
기본 대시보드를 내려받아 인스턴스로 가져옵니다. 이 대시보드에는 상태가 두 개 있습니다: Map 위젯을 추가할 메인 상태와, 선택한 센서의 텔레메트리를 표시하도록 이미 설정한
sensor_details상태. -
MX On Cloud로
temperature와humidity텔레메트리를 보내는 HMI 장치 Sensor A1과 Sensor D1을 만듭니다. -
HMI 장치마다 다음 서버 속성을 설정합니다:
Sensor A1:
active:truelatitude:53.4711462520356longitude:-6.507791078415879
Sensor D1:
active:truelatitude:53.4836805758458longitude:-6.532912864923978
1단계: 위젯 추가
대시보드를 수정 모드로 열고 Map 위젯을 추가합니다.
2단계: 위젯 설정
지도 유형
지도를 선택하고 레이어 세 개를 설정합니다:
| 라벨 | 공급자 | 레이어 |
|---|---|---|
| Roadmap | OpenStreet | HOT |
| Satellite | OpenStreet | Mapnik |
| Hybrid | OpenStreet | WorldImagery |
오버레이
오버레이 ⇾ 마커로 가서 마커 추가를 클릭합니다. 데이터 소스와 키를 설정합니다:
- 데이터 소스: 개체 별명 —
Sensors라는 새 별칭을 만듭니다- 필터 유형: 장치 유형
- 장치 유형:
temperature-sensor
- 위도 키:
latitude - 경도 키:
longitude - 추가 데이터 키:
temperature,humidity,active
마커 모양을 설정합니다:
- 마커: 아이콘 — Thermostat, 크기 48
- 색상 함수:
if (data.active !== "true") { return 'rgb(255, 0, 0)';} else { return 'rgb(39, 134, 34)';}- 라벨 함수:
var color;if (data.active !== "true") { color = 'rgb(255, 0, 0)';} else { color = 'rgb(39, 134, 34)';}return '<span style="border: solid ' + color + '; border-radius: 10px; color: ' + color + '; background-color: #fff; padding: 3px 5px; font-size: 14px; position: relative; bottom: 6px;">' + '${entityLabel}' +'</span>';- 툴팁 함수:
const unit = { from: '°C', METRIC: '°C', IMPERIAL: '°F', HYBRID: '°C' };var usrUnit = ctx.unitService.getTargetUnitSymbol(unit);var unitValue = ctx.unitService.convertUnitValue(data.temperature, unit).toFixed(1);return `<b>${data.entityName}</b><br/><br/><b>Temperature:</b> ${unitValue} ${usrUnit}<br/><b>Humidity:</b> ${data.humidity} %<br/><br/><link-act name="navigate_to_details">Sensor details</link-act><br/>`;- 태그 동작:
- 이름:
navigate_to_details - 동작: 새로운 대시보드 상태 탐색
- 대상 대시보드 상태:
sensor_details
- 이름:
모양
제목 표시를 끕니다.
카드 모양
카드의 전체화면 버튼을 끕니다.
추가를 클릭해 위젯을 대시보드에 넣습니다. 필요하면 크기와 위치를 조정한 다음 대시보드를 저장합니다.
3단계: 마커 다루기
마커를 클릭하면 툴팁에서 센서의 온도와 습도를 볼 수 있습니다. Sensor details를 클릭하면 상세 상태로 이동해 지난 1시간의 현재 측정값과 과거 측정값을 볼 수 있습니다.
결과
Map 위젯이 두 센서를 지도에 온도 조절기 아이콘으로 보여 줍니다. 활성이면 초록, 비활성이면 빨강입니다. 마커를 클릭하면 실시간 텔레메트리와 센서의 과거 데이터 화면 링크가 나타납니다.
문제 해결
섹션 제목: “문제 해결”마커가 보이지 않음:
- 엔티티에
latitude와longitude속성이나 텔레메트리 값이 있는지 확인합니다. - 위젯 구성의 좌표 키 이름이 엔티티의 실제 키 이름과 정확히 같은지 확인합니다.
- 값이 문자열이나 null이 아닌 올바른 소수 좌표인지 확인합니다.
다각형이나 원이 표시되지 않음:
- 엔티티에 속성 키가 있고 값 형식이 올바른지 확인합니다.
- 다각형:
[[lat1,lng1],[lat2,lng2],...]. - 원:
{"latitude":value,"longitude":value,"radius":value}.
폴리라인이 표시되지 않음:
- 엔티티에 올바른 키 이름의 폴리라인 속성이 있는지 확인합니다.
- 속성 값이 기대하는 형식을 따르는지 확인합니다:
[[lat1,lng1],[lat2,lng2],...].
지도가 빈 화면으로 열림:
- Google Maps, HERE, Tencent는 MX On Cloud 시스템 설정에 API 자격 증명이 설정되어 있는지 확인합니다.
- OpenStreetMap은 자격 증명이 필요 없습니다.
높은 확대 수준에서도 마커가 묶임:
- 마커 오버레이에서 지도 마커 클러스터링 사용이 켜져 있는지 확인합니다. 모든 확대 수준에서 개별 마커가 필요하면 끕니다.