教程视频网站:https://ke.qq.com/course/468292
教程学习网站:简书 cesium官方教程
快速上手:推荐使用:marsGIS for Cesium 平台
Cesium功能点介绍
Viewer 地球对象
scene 场景对象
影像图层
地形图层
坐标转换:笛卡尔空间直角坐标,地理坐标(弧度制),地理坐标(经纬度)之间可以互转
笛卡尔空间直角坐标转地理坐标经纬度
1 var position2 = new Cesium.Cartesian3(-2180753.065987198,4379023.266141494,4092583.575045952); 2 var cartographic = Cesium.Cartographic.fromCartesian(position2) 3 var lat = Cesium.Math.toDegrees(cartographic.latitude); 4 var lng = Cesium.Math.toDegrees(cartographic.longitude); 5 let position = Cesium.Cartesian3.fromDegrees(lng, lat, cartographic.height); // 116.47329915346744 39.91549386849083 10.773370964241405
camera相机:
交互性
实体和底层primitive
三维模型:
第一步:添加元素
1 <div id="cesiumContainer"></div>
第二步:添加样式
1 #cesiumContainer { 2 width: 100%; 3 height: 100%; 4 }
第三步:添加地球
1 window.$_viewer = this.viewer = new Cesium.Viewer( // 加载底图 2 "cesiumContainer", 3 { 4 animation: false, //动画 5 navigation: false, //去掉右侧导航栏 6 homeButton: false, //home键 7 geocoder: false, //地址搜素 8 baseLayerPicker: false, //图层选择控件 9 timeline: false, //时间轴 10 fullscreenButton: false, //全屏显示 11 //allOverlays: true, //是否叠加图层 12 infoBox: true, // 点击要素之后浮窗 13 sceneModePicker: false, //投影方式 三维/二维 14 navigationInstructionsInitiallyVisible: false, //导航指令 15 navigationHelpButton: false, //帮助信息 16 selectionIndicator: false, // 选择 17 navigationHelpButton: false, 18 skyBox: new Cesium.SkyBox({ 19 sources: { 20 positiveX: require(\'@/assets/skybox/漫天彩云_LF.jpg\'), 21 negativeX: require(\'@/assets/skybox/漫天彩云_RT.jpg\'), 22 positiveY: require(\'@/assets/skybox/漫天彩云_UP.jpg\'), 23 negativeY: require(\'@/assets/skybox/漫天彩云_DN.jpg\'), 24 positiveZ: require(\'@/assets/skybox/漫天彩云_FR.jpg\'), 25 negativeZ: require(\'@/assets/skybox/漫天彩云_BK.jpg\'), 26 }, 27 }), 28 } 29 )
this.viewer.scene.skyBox.show = false; // 不显示天空
this.viewer.scene.sun.show = false; // 不显示太阳
this.viewer.scene.undergroundMode = true; //重要,开启地下模式,设置基色透明,这样就看不见黑色地球了
this.viewer.scene.underGlobe.show = true;
this.viewer.scene.underGlobe.baseColor = new Cesium.Color(0, 0, 0, 1);
this.viewer.scene.globe.show = false; // 隐藏地球
第四步:控制显示
1 this.viewer._cesiumWidget._creditContainer.style.display = "none" // 隐藏cesium icon 2 this.viewer.scene.undergroundMode = true; //重要,开启地下模式,设置基色透明,这样就看不见黑色地球了 3 this.viewer.scene.underGlobe.show = true; 4 this.viewer.scene.underGlobe.baseColor = new Cesium.Color(0, 0, 0, 1); 5 this.viewer.scene.globe.show = false; // 隐藏地球 6 this.viewer._cesiumWidget._creditContainer.style.display = "none" // 隐藏cesium icon
第五步:添加底图
1 this.imageLayer = this.viewer.imageryLayers.addImageryProvider( 2 new Cesium.TileMapServiceImageryProvider({ 3 //影像图 4 url: "http://121.196.59.85:8016/yx_g", 5 fileExtension: "jpg" //url为文件夹地址 6 }) 7 ) 8 this.imageLayer.show = true //默认显示影像图
第六步:添加模型
1 let promise = this.viewer.scene.open(BIMData.serviceUrl, undefined, { 2 autoSetView: false 3 }); 4 promise.then((layers) => { 5 }):
第七步:控制模型显示
1 this.layers.forEach(layer => { 2 layer.setObjsVisible(ids, true); 3 });
第八步:控制模型点击
1 // 点击模型出现属性框 2 this.viewer.pickEvent.addEventListener((feature) => { 3 this.$refs.propertyinfo.serviceloading = true; 4 });
控制视图定位在某个区域
1 this.orientation = { 2 heading: Cesium.Math.toRadians(348.4202942851978), 3 pitch: Cesium.Math.toRadians(-89.74026687972041), 4 roll: Cesium.Math.toRadians(0) 5 }; 6 this.destination = Cesium.Rectangle.fromDegrees(MaxMinXYData.minx, MaxMinXYData.miny, MaxMinXYData.maxx, MaxMinXYData.maxy) 7 this.viewer.camera.flyTo({ // 相机飞到矩形对应位置 8 destination: this.destination, // 位置 9 orientation: this.orientation, 10 complete: () => { 11 // 定位完成之后的回调函数 12 } 13 });
控制视图定位在某个坐标和对应海拔
1 position = Cesium.Cartesian3.fromDegrees(parseFloat(lng), parseFloat(lat), 3000); 2 this.viewer.camera.flyTo({ // 相机飞到矩形对应位置 3 destination: position, // 位置 4 });
获取海拔
1 let height = this.viewer.camera.positionCartographic.height.toFixed(6)