• 学习【Cesium】第三篇,从Cesium.Viewer查看器开始学习(学不会揍我)


     创建一个默认的Cesium.Viewer对象及效果

    1. this.viewer = new Cesium.Viewer('cesiumContainer')
    2. // 参数1:container ,包含小部件的 DOM 元素或 ID
    3. // 参数2:options,初始化选项,设置相关控件默认值

     Viewer是展示三维要素内容的主要窗口,它不仅是包含三维地球的视窗,还包含了一些基础控件在定义Viewer对象的同事需要设定基础部件、图层等的初始化状态。

     

    通过代码了解Viewer部分参数配置级效果(一个孤单的地球还有无尽星空)

    1. this.viewer = new Cesium.Viewer('cesiumContainer', {
    2. animation: false, // 设置动画小组件关闭展示
    3. timeline: false, // 时间轴关闭展示
    4. // vrButton: false, // vr按钮关闭展示
    5. infoBox: false, // 信息盒子关闭展示
    6. geocoder: false, // 地理编码搜索关闭展示
    7. baseLayerPicker: false, // 基础图层选择器关闭展示
    8. sceneModePicker: false, // 场景选择器关闭展示
    9. fullscreenButton: false, // 全屏按钮关闭展示
    10. navigationInstructionsInitiallyVisible: false, // 导航说明是否最初展示
    11. navigationHelpButton: false, // 导航帮助按钮关闭展示
    12. creditContainer: 'testCredit',
    13. // creditViewport: 'testCreditViewport',
    14. homeButton: false // 主页按钮关闭展示
    15. })

     除了以上部分配置,还有很多例如地球、天空盒、光照等等

    Scene对象配置及效果

    1. // 地球是否展示,效果如下图
    2. this.viewer.scene.globe.show = false

     Scene控制相机调整视口和高度

    1. // 地球是否展示
    2. this.viewer.scene.globe.show = true
    3. // scene控制相机对视口切换
    4. this.viewer.scene.camera.setView({
    5. destination: Cesium.Cartesian3.fromDegrees(114.21, 30.55, 1500)
    6. })

           Scene可以控制对整个场景环境进行修改,如修改地球的显示隐藏、光照强度、地形数据和图层绘制、图层样式等等,它还控制着整个场景的交互,如鼠标对场景的控制、相机视口的移动。

    Entity对象创建一个球及效果

    1. const entity = this.viewer.entities.add({
    2. position: Cesium.Cartesian3.fromDegrees(114.21, 30.55, 400),
    3. ellipsoid: {
    4. radii: new Cesium.Cartesian3(400.0, 400.0, 400.0),
    5. material: Cesium.Color.RED.withAlpha(0.5),
    6. outline: true,
    7. outlineColor: Cesium.Color.BLACK
    8. }
    9. })
    10. this.viewer.trackedEntity = entity

     正面:

     关于Entity的API 创建的受支持形状和体积的完整列表:Creating Entities – Cesium

    DataSourceCollection对象使用效果及展示

     以上我们可以看到DataSource包含了很多数据源对象:

    • CzmlDataSource
    • GeoJsonDataSource
    • GpxDataSource
    • KmlDataSource
      ​​

    不同的对象类型,加载数据的效果有所区别,我这边简单做几个数据源效果

    Czml数据源:

    1. const czml = [
    2. {
    3. id: 'document',
    4. name: 'CZML Model',
    5. version: '1.0'
    6. },
    7. {
    8. id: 'aircraft model',
    9. name: 'Cesium Air',
    10. position: {
    11. cartographicDegrees: [114.21, 30.55, 600]
    12. },
    13. model: {
    14. gltf: window.CESIUM_BASE_URL + '/SampleData/models/CesiumAir/Cesium_Air.glb',
    15. scale: 2.0,
    16. minimumPixelSize: 128
    17. }
    18. }
    19. ]
    20. const dataSourcePromise = this.viewer.dataSources.add(
    21. Cesium.CzmlDataSource.load(czml)
    22. )
    23. dataSourcePromise.then(dataSource => {
    24. this.viewer.trackedEntity = dataSource.entities.getById('aircraft model')
    25. }).catch(function(error) {
    26. window.alert(error)
    27. })

     GeoJson数据源:

    1. this.viewer.dataSources.add(
    2. Cesium.GeoJsonDataSource.load(window.CESIUM_BASE_URL + '/SampleData/ne_10m_us_states.topojson',
    3. {
    4. stroke: Cesium.Color.HOTPINK,
    5. fill: Cesium.Color.PINK.withAlpha(0.5),
    6. strokeWidth: 3
    7. })
    8. )
    9. this.viewer.camera.lookAt(
    10. Cesium.Cartesian3.fromDegrees(-98.0, 40.0),
    11. new Cesium.Cartesian3(0.0, -4790000.0, 3930000.0)
    12. )
    13. this.viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)

    加载Gpx数据源:

    1. // 加载Gpx源数据
    2. loadGpxData() {
    3. const that = this
    4. that.viewer.dataSources.add(Cesium.GpxDataSource.load(
    5. window.CESIUM_BASE_URL + '/SampleData/gpx/complexTrk.gpx',
    6. {clampToGround: true}
    7. )).then(function(dataSource) {
    8. that.viewer.flyTo(dataSource.entities)
    9. })
    10. }

     加载kml数据源:

    1. const that = this
    2. that.viewer.dataSources.add(Cesium.KmlDataSource.load(
    3. window.CESIUM_BASE_URL + '/SampleData/kml/bikeRide.kml'
    4. ))

     

  • 相关阅读:
    [V3] Error on build in CI: Cannot find module ‘node:path‘ in vite.config.ts
    【无标题】mysql 普通用户连接报错: MySql server has gone away
    JS,事件试题,在实践中应用,非常详细!!
    压力串级控制装置用于气动马达的高精度调节
    中文版FL Studio 20 for Mac破解版水果编曲软件 V20.8.3(1574)支持M1/M2+Intel
    部署YUM仓库及NFS共享服务
    一文掌握 Java8 Stream 中 Collectors 的 24 个操作
    多校联测12 赌神
    Spring Cloud框架(原生Hoxton版本与Spring Cloud Alibaba)初级篇 ---- 服务调用
    「Daily OI Round 4」Snow(贪心+模拟)
  • 原文地址:https://blog.csdn.net/New_Wang/article/details/126034697