콘텐츠로 이동

Trip Map

Trip Map 위젯은 엔티티의 경로를 애니메이션으로 다시 보여 줍니다. 선택한 기간의 움직임을 재생하고, 멈추고, 앞뒤로 훑어볼 수 있습니다. 차량 운행, 배송 경로 등 위도/경도 텔레메트리를 보내는 엔티티의 움직임을 단계별로 분석할 때 씁니다. 타임라인 제어 패널이 기본으로 켜져 있어 재생 속도를 조절하며 대화형으로 재생할 수 있습니다.

Trip Map은 MX On Cloud의 지도 위젯 네 가지 중 하나이며, 위젯마다 쓰임새가 다릅니다:

위젯주요 용도
Map현재 엔티티 위치를 실시간으로 표시합니다.
Image Map사용자 지정 배경 이미지를 씁니다. 평면도, 주차장, 실내 배치도에 알맞습니다.
Trip Map타임라인 제어를 모두 갖춘 경로 애니메이션 재생. 움직임을 단계별로 분석할 때 알맞습니다.
Route Map과거 경로 전체를 고정된 경로 선으로 그립니다. 전체 이동을 한눈에 검토할 때 알맞습니다.

Trip Map만의 특징:

  • 시계열 위도/경도 데이터로 경로를 그리고, 움직임을 프레임 단위로 애니메이션합니다.
  • 타임라인 제어 패널이 기본으로 켜져 있습니다. 재생, 일시 정지, 훑어보기, 재생 속도 조절을 할 수 있습니다.
  • 이동 경로, 마커, 다각형, 원, Polylines 오버레이를 한 지도에 함께 표시할 수 있습니다.
  • 버스 노선이나 배관 같은 고정 시설 경로를 표시하는 Polylines 오버레이를 지원합니다.
  1. 대시보드를 열고 수정 모드로 바꿉니다.
  2. 위쪽의 위젯 추가를 클릭하거나, 화면 가운데의 위젯 추가 아이콘을 클릭합니다.
  3. Maps 위젯 번들을 엽니다.
  4. Trip Map을 선택합니다.
  5. 위젯 설정을 마친 다음 추가를 클릭합니다.

시간 창은 재생할 이동 데이터를 불러올 기간을 정합니다.

  • 대시보드 시간 창 사용: 위젯이 대시보드에 설정한 전체 시간 범위를 따릅니다. 대시보드 시간 범위가 바뀌면 이 모드를 쓰는 위젯이 모두 함께 바뀝니다.

  • 위젯 시간창 사용: 위젯이 자체 시간 범위를 따로 씁니다. 모드를 고릅니다:

    • 기록 — 시작과 끝이 정해진 고정 범위. Trip Map의 기본값으로, 정해진 이동을 불러와 재생할 때 씁니다.
    • 실시간 — 시간이 지나면서 창이 앞으로 움직여 늘 가장 최근 구간(예: “과거 1일”)을 보여 줍니다. 계속 감시할 때 씁니다.
  • 시간 창 표시: 위젯 카드의 시간 구간 라벨을 켜고 끕니다.

시간 창 설정에 대한 자세한 내용은 시간 창을 참고하세요.

지도(타일 기반)와 이미지(사용자 지정 배경) 중에서 고릅니다.

일반 타일 지도에 경로를 그립니다. 레이어를 하나 이상 설정합니다:

  • 라벨: 위젯의 레이어 전환기에 표시되는 이름.
  • 공급자: OpenStreet, Google, HERE, Tencent, 사용자 지정(타일 서버 URL 입력).
  • 레이어: 타일 스타일 — Mapnik, HOT, WorldStreetMap, WorldTopoMap, WorldImagery, Roadmap 등. 쓸 수 있는 옵션은 공급자마다 다릅니다.
  • 참조 레이어: 라벨이 붙은 지도 요소(도로, 경계)를 담은 투명 오버레이. 레이어의 톱니바퀴 아이콘 메뉴에서 설정합니다.

전환할 수 있는 레이어를 더 설정하려면 레이어 추가를 클릭합니다. 사용자는 위젯의 레이어 아이콘 버튼으로 레이어를 바꿉니다.

오버레이는 지도에 그려지는 시각 요소입니다. 오버레이 유형마다 자체 데이터 소스에 연결되고 따로 설정합니다.

이동 경로 오버레이는 시계열 위도/경도 데이터로 엔티티가 지나간 길을 이어진 선으로 그립니다. 재생하는 동안 마커가 경로를 따라 움직이며 기록된 타임스탬프마다 엔티티 위치를 보여 줍니다.

이동 경로 추가하기: 이동 경로 추가를 클릭하고 데이터 소스를 선택한 다음 좌표 키를 정하고 저장을 클릭합니다.


데이터 소스

시계열 좌표를 보내는 엔티티를 선택합니다: 기능, 장치, 개체(엔티티 별칭). 필터를 적용해 범위를 좁힙니다. 데이터 소스를 더 추가하려면 추가 데이터 소스 더 보기를 펼칩니다.


키

  • 위도 키: 위도 값이 담긴 시계열 키(기본값: latitude).
  • 경도 키: 경도 값이 담긴 시계열 키(기본값: longitude).
  • 추가 데이터 키: 라벨과 툴팁 함수에서 쓸 추가 텔레메트리 키(예: speed, status).

모양 — 마커

재생하는 동안 엔티티의 현재 위치에 표시되는 아이콘. 표시 모드 세 가지:

  • 도형: 기본 제공 도형을 고르고 크기(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 열기.


위치 변환 (이미지 지도 유형 전용)

이미지에 그리기 전에 마커의 원래 상대 x/y 좌표를 바꾸는 JavaScript 함수. 여러 엔티티의 마커가 같은 위치에 겹쳐 떨어뜨려야 할 때나, 좌표를 사용자 지정 이미지 축척에 맞게 다시 매핑해야 할 때 유용합니다.

함수 시그니처: f(origXPos, origYPos, data, dsData, aspect)

매개변수:

  • origXPos: number — 원래 상대 x 좌표(0~1).
  • origYPos: number — 원래 상대 y 좌표(0~1).
  • data — 이 이동 경로 점의 엔티티 데이터: 설정한 데이터 소스의 엔티티 속성과 텔레메트리.
  • dsData — 추가 데이터 소스를 포함한 모든 데이터 레이어의 전체 데이터.
  • aspect: number — 이미지 지도의 종횡비(너비 / 높이).

{ x: number, y: number }를 돌려줘야 합니다. 각각 0~1 범위의 새 상대 좌표입니다.

기본값(그대로 통과):

return {x: origXPos, y: origYPos};

예시 — 위치가 같은 마커를 찾아 겹침이 가장 적게 배치합니다:

var xPos = data.xPos;
var yPos = data.yPos;
var locationGroup = dsData.filter((item) => item.xPos === xPos && item.yPos === yPos);
if (locationGroup.length > 1) {
const count = locationGroup.length;
const index = locationGroup.indexOf(data);
const radius = 0.035;
const angle = (360 / count) * index - 45;
const x = xPos + radius * Math.sin(angle * Math.PI / 180) / aspect;
const y = yPos + radius * Math.cos(angle * Math.PI / 180);
return {x: x, y: y};
} else {
return {x: xPos, y: yPos};
}

경로

  • 경로: 켜면 경로 선을 표시합니다. 선 두께(px)와 색상을 정합니다.
  • 경로 데코레이터: 경로를 따라 그려지는 방향 기호:
    • 데코레이터 기호: 화살표 또는 대시.
    • 기호의 크기와 색상.
    • 데코레이터 배치: 시작 오프셋, 끝 오프셋, 반복 간격(모두 px).
  • 점: 기록된 데이터 점마다 찍히는 점 마커. 크기(px)와 색상을 정합니다.
    • 점 색상 함수: 점마다 텔레메트리 값에 따라 색상 문자열을 돌려주는 JavaScript 함수(예: 속도별로 점 색 구분).
    • 점 툴팁: 기록된 점마다 나타나는 팝업. 패턴이나 함수, 툴팁 트리거, 자동 닫기, 태그 동작을 설정합니다.

그룹

그룹 이름을 지정합니다. 그룹은 위젯의 그룹 패널에 나타나며, 그룹 전체를 한 번에 표시하거나 숨길 수 있습니다.

추가 데이터 소스는 지도에 직접 표시하지 않는 엔티티의 텔레메트리나 속성을 제공합니다. 오버레이 함수의 조건 로직에 씁니다(예: 관련 HMI 장치 데이터에 따라 색이 바뀌는 마커, 정보를 더한 툴팁, 계산한 표시 값).

  • 소스: 엔티티 유형 — 기능, 장치, 개체 별명.
  • 데이터 키: 엔티티에서 읽을 텔레메트리나 속성 키.

더 설정하려면 데이터 소스 추가를 클릭합니다.

위젯에서 쓸 대화형 컨트롤을 설정합니다.

위치 — 컨트롤 패널의 위치: 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래.

줌 동작 — 확대/축소 방법을 켭니다:

  • 스크롤: 마우스 휠로 확대/축소.
  • 더블 클릭: 두 번 클릭하면 확대.
  • 컨트롤 버튼: 지도에 + / − 확대/축소 버튼을 표시합니다.

축척 — 거리 축척 막대를 표시합니다: 미터법(km / m) 또는 야드파운드법(mi / ft).

타임라인 제어 패널 — 기본으로 켜져 있습니다. 경로를 단계별로 살펴보는 대화형 재생 컨트롤을 추가합니다:

  • 시간 간격: 애니메이션 프레임마다 시간이 얼마나 나아가는지(ms).
  • 속도 옵션: 사용자에게 보여 줄 재생 속도 배수를 쉼표로 구분한 목록(예: 1, 5, 10, 15, 25).
  • 타임스탬프: 현재 재생 시각을 표시합니다. 드롭다운에서 날짜/시간 형식을 고릅니다.
  • 실제 위치에 스냅: 켜면 재생하는 동안 마커가 가장 가까운 실제 데이터 점에 붙습니다. 펼쳐서 JavaScript 필터 함수를 설정합니다. 이 함수는 data와 dsData를 받아, 그 점을 기준점으로 써야 하면 true를 돌려줍니다(예: 시간 간격으로 거르기: return data.time % 1000 === 0).

지도 위에 겹쳐 표시할 사용자 지정 버튼을 추가합니다. 버튼마다 클릭하면 미리 정한 동작을 실행합니다.

버튼마다 라벨, 아이콘, 색상, 동작이 있습니다.

쓸 수 있는 동작 유형: 동작 안 함, 새로운 대시보드 상태 탐색, 현재 대시보드 상태 업데이트, 다른 대시보드 탐색, Custom action, Custom action (with HTML template), 모바일 액션, URL 열기, 맵 항목 배치.

버튼을 더 설정하려면 버튼 추가를 클릭합니다.

동작 설정에 대한 자세한 내용은 위젯 동작을 참고하세요.

  • 모든 마커를 포함하도록 지도 경계 맞춤: 불러올 때 보이는 지도 항목이 모두 들어오도록 확대 수준과 위치를 자동으로 맞춥니다. 기본으로 켜져 있습니다.
  • 기본 지도 중심 위치: 자동 맞춤을 끄면 쓰는 처음 지도 중심 좌표(위도, 경도).
  • 기본 지도 확대 수준: 처음 확대 수준. 값이 클수록 가까이 확대합니다(예: 국가 수준 7, 거리 수준 15).
  • 로드할 엔터티 수 제한: 한 번에 불러올 엔티티 최대 수. 데이터가 많을 때 성능 문제를 막습니다(기본값: 16384).
  • 제목: 위젯 헤더 라벨. 기본으로 꺼져 있습니다. 패턴 변수로 ${entityName}이나 ${entityLabel}을 쓰거나 고정 문자열을 입력합니다.
  • 카드 아이콘: 헤더의 제목 옆에 표시되는 아이콘. 크기(px), 정렬, 색상을 정합니다.
  • 배경: 카드 배경색.
  • 카드 버튼 표시: 위젯 헤더의 Data export와 전체화면 버튼을 켜고 끕니다.
  • 카드 모서리 반경: 모서리 둥글기(px, 기본값: 0px).
  • 카드 패딩: 내용과 카드 가장자리 사이의 안쪽 간격(px, 기본값: 8px).

위젯 헤더 버튼 동작을 추가합니다. 위젯 헤더의 아이콘 버튼으로, 클릭하면 설정한 동작을 실행합니다.

쓸 수 있는 동작 유형과 설정은 위젯 동작을 참고하세요.

목표: 지난 1시간 동안의 버스 경로를 시각화하고, 타임라인으로 재생, 일시 정지, 훑어보기를 할 수 있게 합니다.

예시 위젯 내려받기

이 예시용으로 미리 설정한 Trip Map 위젯을 내려받아 내 대시보드에서 다시 쓸 수 있습니다.

가져온 뒤 환경에 맞게 다음 설정을 바꿉니다:

  • 데이터 소스: 실제 HMI 장치를 선택합니다(예: 직접 만든 Tracker1).
  • 데이터 키: 텔레메트리 키 이름이 다르면 바꿉니다(latitude, longitude, speed, status).
  • 지도 공급자: MX On Cloud 인스턴스가 지원하는 공급자를 고릅니다.

사전 준비

latitude, longitude, speed, status를 시계열 텔레메트리로 계속 보내는 HMI 장치가 필요합니다.

  1. TOP Design Studio 프로젝트 파일을 내려받습니다.

  2. 프로젝트 데이터를 HMI 장치로 옮깁니다. (HMI 장치 연결 방법은 연결 가이드를 참고하세요.)

  3. MX On Cloud에 Tracker1이라는 HMI 장치를 만듭니다.

  4. Tracker1이 latitude, longitude, speed, status 키로 텔레메트리를 받는지 확인합니다.

1단계: 위젯 추가

대시보드를 수정 모드로 열고 Trip Map 위젯을 추가합니다.

2단계: 위젯 설정

타임윈도우

시간 구간을 정합니다:

  • 기간: 기록, 과거 1시간
  • 집합: 없음

지도 유형

지도를 선택하고 레이어 세 개를 설정합니다:

라벨공급자레이어
RoadmapOpenStreetHOT
SatelliteOpenStreetMapnik
HybridOpenStreetWorldImagery

오버레이

오버레이 ⇾ 이동 경로로 가서 이동 경로 추가를 클릭합니다.

이동 경로를 설정합니다:

  • 데이터 소스: 장치 — Tracker1
  • 위도 키: latitude, 경도 키: longitude
  • 추가 데이터 키: speed, status

마커와 라벨을 설정합니다:

  • 마커: 도형 — 버스 아이콘, 크기 34, 색상 #E89623
  • 라벨 패턴:
<div style="position: relative; white-space: nowrap; text-align: center; font-size: 12px; top: 5px;"><span style="border-radius: 10px; background-color: #fff; padding-left: 12px; padding-right: 12px; padding-top: 4px; padding-bottom: 4px;">${entityName}</span></div>

툴팁 함수를 설정합니다:

var speed = data['speed'];
var res;
if (speed > 0) {
res = "<b>${entityName}</b><br/><b>Speed:</b> " + String(speed) + " km/h";
} else {
res = "<b>${entityName}</b><br/><b>Status:</b> At the stop";
}
return res;

이동 경로 설정을 저장합니다.


모양

제목 표시를 끕니다. 추가를 클릭해 위젯을 대시보드에 넣습니다. 필요하면 크기와 위치를 조정한 다음 대시보드를 저장합니다.

3단계: 이동 경로 재생

위젯을 추가했으면 타임라인 제어 패널로 경로를 다시 재생합니다:

  1. 타임라인 패널의 재생을 클릭합니다. 버스 마커가 기록된 경로를 따라 움직이기 시작합니다.
  2. 타임라인 슬라이더를 움직여 이동 중 특정 순간으로 건너뜁니다.
  3. 재생 속도(5×, 10×, 15×, 25×)를 조정해 전체 경로를 더 빨리 살펴봅니다.
  4. 버스 마커를 클릭하면 그 타임스탬프의 속도나 정차 상태를 보여 주는 툴팁이 나타납니다.

결과

Trip Map 위젯이 지난 1시간 동안의 버스 경로 전체를 표시합니다. 버스 마커가 경로를 따라 부드럽게 움직이며, 다음을 볼 수 있습니다:

  • 속도 변화 — 툴팁에 동적으로 반영됩니다.
  • 정차 — 버스 마커가 멈추고 툴팁에 “At the stop”이 표시되는 곳.
  • 이어진 경로 — 기록된 위도·경도 점을 모두 잇습니다.

타임라인 패널로 모든 것을 제어할 수 있습니다. 일시 정지, 되감기, 빨리 감기로 이동 중 어느 순간이든 살펴봅니다.

다각형 영역과 색 구분 점이 있는 버스 추적

섹션 제목: “다각형 영역과 색 구분 점이 있는 버스 추적”

목표: 버스 경로를 시각화하고 지도에 운행 구역을 강조하면서, 속도에 따라 이동 경로 점의 색을 동적으로 바꿉니다.

이 예시는 버스 추적 예시에서 이어집니다. 먼저 그 예시를 마칩니다.

1단계: 다각형 텔레메트리 추가

Tracker1 HMI 장치에 다각형 좌표를 담은 polygonCoordinates 키를 추가합니다. 이 다각형은 버스의 운행 범위, 즉 차량이 주로 움직이는 영역을 정합니다.

다각형 텔레메트리 데이터 예시:

[[37.77122820281169,-122.51083552837373],[37.77159267504383,-122.50321805477144],[37.771919319384914,-122.49567031860353],[37.773034453528325,-122.4718201160431],[37.77328638176224,-122.4667775630951],[37.77348149814317,-122.46423751115802],[37.7737808953521,-122.46169209480287],[37.774677401405654,-122.45474785566331],[37.766465644557044,-122.45309293270111],[37.766015785681795,-122.45704650878908],[37.76638938596602,-122.45860219001771],[37.766346926686055,-122.45951950550081],[37.76644870226952,-122.45986282825471],[37.766321482768326,-122.46040463447572],[37.766270465011345,-122.46105909347536],[37.766020298321884,-122.4668848514557],[37.76562604882691,-122.47779607772829],[37.7649135114535,-122.49398589134218],[37.7642346742055,-122.51012206077577],[37.76598228246535,-122.50999331474306],[37.76776339244564,-122.51014351844788]]

2단계: 위젯 편집

Trip Map 위젯을 편집 모드로 바꿉니다.

이동 경로 — 점 색상 함수

오버레이 ⇾ 이동 경로 ⇾ 이동 경로 설정 ⇾ 점으로 가서 경로를 따라 버스 속도를 시각적으로 나타내는 점 색상 함수를 추가합니다:

  • 빨강 — 느린 구간(교통 정체나 정차)
  • 초록 — 보통 속도
  • 노랑 — 빠른 구간
var speed = data['speed'];
if (speed < 10) {
return '#F44336';
} else if (speed >= 10 && speed < 55) {
return '#4CAF50';
} else {
return '#FFC107';
}

다각형 — 운행 구역 추가

오버레이 ⇾ 다각형으로 가서 다각형 추가를 클릭합니다. 다음과 같이 설정합니다:

  • 데이터 소스: 장치 — Tracker1
  • 다각형 키: polygonCoordinates
  • 채우기 색상: #00968878
  • 선: #009688B3
  • 라벨: Bus operating area

추가를 클릭해 위젯을 저장한 다음 대시보드를 저장합니다.

결과

이제 Trip Map 위젯이 더 풍부한 시각화를 보여 줍니다:

  • 재생하는 동안 이동 경로를 따라가는 움직이는 버스 마커.
  • 버스 운행 구역을 나타내는 다각형 영역.
  • 경로를 따라 속도 변화를 나타내는 색 구분 이동 경로 점 — 빨강은 느림, 초록은 보통, 노랑은 빠름.

경로가 표시되지 않음:

  • HMI 장치에 설정한 키 이름과 같은 위도·경도 키의 시계열 기록이 있는지 확인합니다(기본값: latitude, longitude).
  • 시간 창을 확인합니다. 범위가 너무 좁으면 그 안에 데이터 점이 없을 수 있습니다.
  • 데이터 소스 엔티티가 맞고 키 이름이 텔레메트리에 나오는 것과 똑같은지 확인합니다.

마커가 보이지 않음:

  • 엔티티에 latitude와 longitude 속성이나 텔레메트리 값이 있는지 확인합니다.
  • 위젯 구성의 좌표 키 이름이 엔티티의 실제 키 이름과 같은지 확인합니다.

폴리라인이 표시되지 않음:

  • 엔티티에 올바른 키 이름의 폴리라인 속성이 있는지 확인합니다.
  • 속성 값이 기대하는 형식을 따르는지 확인합니다: [[lat1,lng1],[lat2,lng2],...].

지도가 빈 화면으로 열림:

  • Google Maps, HERE, Tencent는 MX On Cloud 시스템 설정에 API 자격 증명이 설정되어 있는지 확인합니다.
  • OpenStreetMap은 자격 증명이 필요 없습니다.

애니메이션이 재생되지 않음:

  • 지도 컨트롤에서 타임라인 제어 패널이 켜져 있는지 확인합니다.
  • 선택한 시간 창 안에 HMI 장치의 시계열 데이터가 있는지 확인합니다.