当前位置: 首页 > news >正文

Cesium学习(未完继续)

添加底图

viewer.imageryLayers.addImageryProvider(imageryProvider)

常见 ImageryProvider 实现类

  • ArcGisMapServerImageryProvider:用于从 ArcGIS Server 获取影像数据。

  • BingMapsImageryProvider:用于从 Bing Maps 获取影像数据。

  • OpenStreetMapImageryProvider:用于从 OpenStreetMap 获取影像数据。

  • TileMapServiceImageryProvider:用于从 Tile Map Service 获取影像数据。

  • WebMapServiceImageryProvider:用于从 WMS 服务获取影像数据。

  • WebMapTileServiceImageryProvider:用于从 WMTS 服务获取影像数据。

举例:

imageryProvider = new Cesium.ArcGisMapServerImageryProvider({
                    url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer'
                });

注意事项

  • 透明度设置:可以通过设置 ImageryLayeralpha 属性来调整图层的透明度。

    JavaScript复制

    wmsLayer.alpha = 0.5; // 设置透明度为50%
  • 图层顺序调整:可以使用 imageryLayers.raiseToTop(layer)imageryLayers.lowerToBottom(layer) 方法来调整图层的显示顺序。

  • 图层显示控制:可以通过设置 ImageryLayershow 属性来控制图层的显示或隐藏。

wmsLayer.show = false; // 隐藏图层

添加3dTiles

const tileset = await Cesium3DTileset.fromUrl(url, {
            enableCollision: true,
});

tileset.style = new Cesium3DTileStyle({
      color: "color('red')",
      show: true,
      pointSize: 10,
})

viewer.scene.primitives.add(tileset);

地形

如使用官方地形服务需注册Cesium ion并配置访问令牌 Ion.defaultAccessToken

地形的作用:为Cesium地球提供真实地形高程数据,使地表呈现3D起伏效果(如山脉、山谷)

terrainProvider: new Cesium.CesiumTerrainProvider({
url: "http://data.marsgis.cn/terrain",
requestWaterMask: true,
                 requestVertexNormals: true
}),
imageryProvider: new Cesium.UrlTemplateImageryProvider({
url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}"
})


//ArcGIS
terrainProvider: new Cesium.ArcGISTiledElevationTerrainProvider({
                 url: 'https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer',
             }),
             imageryProvider: new Cesium.UrlTemplateImageryProvider({
                 url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}"
             })

// 局部地形
terrainProvider: new Cesium.CesiumTerrainProvider({
                 url: appConfig.dataServiceBaseUrl + "localter",
                 requestWaterMask: true, //水波纹
                 requestVertexNormals: true //法向量
             }),
             imageryProvider: new Cesium.UrlTemplateImageryProvider({
                 url: "https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}"
             })

//terrainExaggeration: 3, //地形夸张系数 

相机及视角

相机操作-fly

this.viewer.camera.flyTo({
            destination: Cesium.Cartesian3.fromDegrees(
              107,
              33,
              1000
            ),
            duration: 3 //持续时间
          });

从地球飞到西安的上空

放大缩小向右向左

// 缩小
viewer.camera.zoomOut(500); 
// 放大
viewer.camera.zoomIn(500);  
// 向右
viewer.camera.moveRight(500); 
// 向右
viewer.camera.moveLeft(500); 

绕Z轴旋转

viewer.camera.rotate(Cesium.Cartesian3.UNIT_Z, Cesium.Math.toRadians(10));

zoomTo

const viewer = cesiumInit.viewer;
      var entity = viewer.entities.add({
        position: Cesium.Cartesian3.fromDegrees(103.851959, 1.290270),
        box: {
          dimensions: new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
          material: Cesium.Color.RED.withAlpha(0.5),
          outline: true,
          outlineColor: Cesium.Color.RED
        }
      });
      viewer.zoomTo(entity);

元素相关

点击改变颜色

	// 鼠标左键单击事件
      viewer.screenSpaceEventHandler.setInputAction((click) => {
        const pickedObject = viewer.scene.pick(click.position); // 获取鼠标点击的实体对象
        if (Cesium.defined(pickedObject)) {
          if (Cesium.defined(pickedObject)) {
            // 改变实体的颜色为绿色
            pickedObject.color = Cesium.Color.GREEN;
          }
        }
      }, Cesium.ScreenSpaceEventType.LEFT_CLICK);

显示隐藏

    viewer.screenSpaceEventHandler.setInputAction((click:any) => {
      const pickedObject = viewer.scene.pick(click.position); // 获取鼠标点击的实体对象
      if (defined(pickedObject)) {
        if (defined(pickedObject)) {
          // 改变实体的颜色为绿色
          console.log(pickedObject);
          pickedObject.show = false;
        }
      }
    }, ScreenSpaceEventType.LEFT_CLICK);

在鼠标事件函数的回调里,我们可以得到构件的实体对象,可以看到构件的所有信息

获取元素id

console.log(pickedFeature.getProperty("element"));

http://www.dtcms.com/a/106330.html

相关文章:

  • 题解:AT_arc050_c [ARC050C] LCM 111
  • Android的安全问题 - 在 Android 源码的 system/sepolicy 目录中,区分 public、private 和 vendor的目的
  • Kotlin 作用域函数:apply、let、run、with、also
  • 掩码图像建模 (MIM) 中的对数似然与交叉熵
  • 品铂科技与宇都通讯UWB技术核心区别对比(2025年)
  • C++:位图和布隆过滤器
  • spring-ai-alibaba第三章ollama集成Tool
  • 【redis】缓存 更新策略(定期、实时生存),缓存预热、穿透、雪崩、击穿详解
  • ERP管理系统:Java+Vue,含源码及文档,一体化管理资源,优化流程,强化企业运营效率
  • React.memo()和 useMemo()的用法是什么,有哪些区别
  • CSS3学习教程,从入门到精通,CSS3 媒体查询实现响应式布局语法指南(21)
  • Unity插件SuperScrollView详解(基础篇)
  • Redis安全与配置问题——AOF文件损坏问题及解决方案
  • 机器人--ros2--IMU
  • 用jQuery和Canvas打造2D版“我的世界+超级玛丽“游戏
  • 知名界面控件DevExpress v24.2.6全新可用|发布重要更改
  • 安卓一些接口使用
  • dbgpt7.0 docker部署
  • Unity工具—默认取消Image和RowImage的Raycast Target
  • Vue3入门
  • 智谱大模型(ChatGLM3)PyCharm的调试指南
  • AI大模型从0到1记录学习 day11
  • 三步构建企业级操作日志系统:Spring AOP + 自定义注解的优雅实践
  • Redis的一些高级指令
  • HBase安装与配置——单机版到完全分布式部署
  • 【蓝桥杯】回文字符串
  • 自己用python写的查询任意网络设备IP地址工具使用实测
  • 什么是 继续预训练、SFT(监督微调)和RLHF
  • 【Java/数据结构】Map与Set(图文版)
  • AllData数据中台商业版发布版本1.2.9相关白皮书发布