2019년 1월 2일 수요일

Cesium에서 지도 위에 개체 올리는 방법

Cesium에서 지도 위에 개체 추가하는 방법 2가지

primitives를 이용하는 방법과 entities를 이용하는 방법이 있음


primitives에 추가하는 방법

viewer.scene.primitives.add({옵션});
예문
var tileset1 = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
    url: '/Cesium-1.50/data/CtData/sampyeong/smp1/tileset.json',
    maximumMemoryUsage : 768, //기본값 512. 개발PC기준 1024 설정시 더 불안정 했음
    //maximumScreenSpaceError: 1 //세분화 수준 향상 값 : 작을수록 디테일함. 기본값 16
}));

tileset1.readyPromise.then(function(tileset) {
    //var heightOffset = 0; //타일 고도 : 지형이 없을때
    var heightOffset = 68; //타일 고도 : 지형이 있을때
    var boundingSphere = tileset.boundingSphere;
    var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
    var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
    var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
    var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
    tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
    tileset.show = true; //모델 보이기
});


entities에 추가하는 방법

viewer.entities.add({옵션});
예문
var entity = viewer.entities.add({
    name : 'video',
    position : Cesium.Cartesian3.fromDegrees(coordinatex, coordinatey, level),
    point : {
        pixelSize : 10,
        color : Cesium.Color.YELLOW,
        outlineWidth : 1,
        outlineColor : Cesium.Color.GREEN,
        disableDepthTestDistance : Number.POSITIVE_INFINITY
    }
});