◆ ESSAY
지도 그림은 좌표와 지도 타일을 사용한다. 좌표가 없거나 지도 설정이 유효하지 않으면 지도 그림을 만들 수 없다. 이때는 이벤트 위치를 경로 위에 표시하는 단순 도식으로 전환할 수 있다.
지도 타일은 여러 장을 조합해 화면을 채운다. 일부 요청이 실패해도 나머지 타일로 그림을 만들 수 있다. 타일을 하나도 받지 못하면 빈 지도를 성공으로 기록하지 않고 다른 표현을 고른다. 부분 실패까지 전체 실패로 취급하면 쓸 수 있는 정보도 버리기 때문이다.
외부 지도 타일을 쓴다면 출처 표시와 사용 조건도 렌더링 요구사항에 포함해야 한다. 제공자 정책은 캔버스에 어떤 정보를 그릴지 결정한다.
단순 도식은 경로 구간과 이벤트 거리를 사용한다. 이벤트가 구간 안에 있는지 확인한 뒤 다음 비율로 위치를 표시한다.
ratio = (eventDistance - segmentStart)
/ (segmentEnd - segmentStart)
직선 구간은 비율을 바로 적용할 수 있다. 꺾이거나 휘어진 경로는 각 선분의 길이를 누적해 전체 경로상의 위치를 찾는다. 좌표가 없어 지도에 표시하지 못하더라도, 경로 데이터가 있으면 단순 도식으로 정보를 전달할 수 있다.
렌더링 결과에는 이미지뿐 아니라 이벤트가 그림 안에서 놓인 점과 계산된 위치도 포함한다. 포맷터는 이 위치를 읽어 발생 시각, 분류 결과, 거리, 인접 기준점과 추정 좌표를 문장으로 만든다.
발생 시각: [이벤트 시각]
분류: [분류 결과]
기준점에서 거리: 약 1.3 km
인접 기준점: 기준점 B에서 약 300 m
위치: 추정 좌표 (φ, λ)
거리와 위치 이름은 기준정보에서 얻은 설명이고 좌표는 계산값이다. 표시 문구에서도 이 차이를 유지해야 한다. 좌표를 소수점 여섯 자리로 보여 준다고 측정 오차까지 그 수준으로 좁아지지는 않는다.
좌표를 다루는 라이브러리마다 위도와 경도의 순서가 다를 수 있다. 위치 결과의 필드 순서와 렌더링 라이브러리의 인수 순서를 구분해 변환해야 마커가 엉뚱한 곳에 찍히지 않는다.
지도 구현을 바꿔도 위치 결과의 의미가 유지되면 메시지 규칙을 다시 만들 필요가 없다. 표현 방식과 위치 계산 사이의 경계를 둔 효과다.