1. 程式人生 > >Cesium高度解析

Cesium高度解析

spa 位置 radius binding contain set 高度 bar source

var viewer = new Cesium.Viewer(‘cesiumContainer‘, {
    shadows : true
});
//為true時,球體會有高程遮擋效果(在沒有地形時候也會有高程遮擋效果)
viewer.scene.globe.depthTestAgainstTerrain = true;

var viewModel = {
    height: 0
};

Cesium.knockout.track(viewModel);
//獲取左上角的toolbar
var toolbar = document.getElementById(‘toolbar‘);
Cesium.knockout.applyBindings(viewModel, toolbar);
//添加 3D Tiles,url是路徑 var tileset = new Cesium.Cesium3DTileset({ url: Cesium.IonResource.fromAssetId(3883) }); //tileset的根已經準備就緒 tileset.readyPromise.then(function(tileset) { //在場景添加tileset viewer.scene.primitives.add(tileset); //zoomTo (target,offset)目標和偏移 viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.0, -0.5, tileset.boundingSphere.radius * 2.0)); }).otherwise(
function(error) { //若沒有加載成功,提示錯誤 console.log(error); }); Cesium.knockout.getObservable(viewModel, ‘height‘).subscribe(function(height) { height = Number(height); if (isNaN(height)) { return; } //地理位置 var cartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);
var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0); var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, height); var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3()); tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation); });

技術分享圖片

Cesium高度解析