POI(Point of Interest)는 지도에 특정 지점을 표시하는데 주로 사용되며 거리와 상관없이 오브젝트가 일정한 크기를 유지합니다.
XDWorld의 POI는 상단에 이미지, 하단에 텍스트를 출력하는 형식으로 이루어져 있습니다.
POI 생성하기
POI는 특정 이미지를 활용해 생성하거나 이미지 없이 텍스트로만 생성할 수도 있고 이미지, 텍스트 모두 사용하는 것도 가능합니다.
POI는 JSPoint 타입 오브젝트로 생성됩니다. POI는 아래 과정을 거쳐 가시화 할 수 있습니다.
POI를 저장할 레이어 생성
POI에 사용할 이미지 로드 및 생성 (이미지를 사용하지 않는 경우 이 단계를 건너뜁니다.)
POI 오브젝트 JSPoint 생성
POI 속성 설정
레이어에 POI 저장 후 가시화
아래는 POI 이미지와 텍스트가 있는 POI 오브젝트를 생성하는 전체 코드입니다.
이어서 코드의 세부 단계에 대해 알아봅니다.
function createPOI() {
// 1. POI 오브젝트를 추가 할 레이어 생성
var layerList = new Module.JSLayerList(true);
var layer = layerList.createLayer("POI_LAYER", Module.ELT_3DPOINT);
// 2-1. POI에 사용할 이미지 로드
var img = new Image();
img.onload = function() {
// 2-2. POI에 사용할 이미지 생성
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
canvas.width = this.width;
canvas.height = this.height;
ctx.drawImage(img, 0, 0);
// 3. POI 오브젝트 JSPoint 생성
var poi = Module.createPoint("MY_POI");
// 4. POI 속성 설정
poi.setPosition(new Module.JSVector3D(126.924116, 37.521620, 13.315417));
poi.setImage(ctx.getImageData(0, 0, this.width, this.height).data, this.width, this.height);
poi.setText("TEXT");
// 5. POI 속성 설정
layer.addObject(poi, 0);
};
img.src = "./MY_POI_IMAGE.png";
}