首页 > 其他分享 >canvas + Cesium 动画图片材质

canvas + Cesium 动画图片材质

时间:2023-02-08 14:23:27浏览次数:38  
标签:控件 canvas false 动画图片 viewer let Cesium

      let osm = Cesium.createOpenStreetMapImageryProvider({
        url: "https://a.tile.openstreetmap.org/",
      })
      let viewer = new Cesium.Viewer(this.$refs.cesiumContainer, {
        imageryProvider: osm,
        contextOptions: {
          webgl: {
            alpha: true,
          },
        },
        selectionIndicator: false,
        animation: false, //是否显示动画控件
        baseLayerPicker: false, //是否显示图层选择控件
        geocoder: false, //是否显示地名查找控件
        timeline: false, //是否显示时间线控件
        sceneModePicker: false, //是否显示投影方式控件
        navigationHelpButton: false, //是否显示帮助信息控件
        infoBox: false, //是否显示点击要素之后显示的信息
        fullscreenButton: false,
      })
      //取消双击事件
      viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(
        Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
      )
      //设置homebutton的位置
      Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(
        110.15,
        34.54,
        110.25,
        34.56
      ) //Rectangle(west, south, east, north)
      //设置初始位置
      viewer.camera.setView({
        destination: Cesium.Cartesian3.fromDegrees(110.2, 34.55, 3000000),
      })

      //开启深度检测
      viewer.scene.globe.depthTestAgainstTerrain = true

      let rotation = Cesium.Math.toRadians(30)
      let curCanvas = "a"
      function getRotationValue() {
        rotation += 0.005
        return rotation
      }

      function drawCanvas(time, result) {
        let canvas = document.getElementById("canvas-" + curCanvas)
        let context = canvas.getContext("2d")
        context.clearRect(0, 0, canvas.width, canvas.height)
        context.font = "italic 40pt Calibri"
        context.fillStyle = "red"
        context.fillText(
          Cesium.JulianDate.toDate(Cesium.JulianDate.now()).getTime(),
          20,
          100
        )
        curCanvas = curCanvas === "a" ? "b" : "a"
        return canvas
      }

      let i = 0
      viewer.entities.add({
        name: "Rotating rectangle with rotating texture coordinate",
        rectangle: {
          coordinates: new Cesium.CallbackProperty(function () {
            i = i + 0.01
            return Cesium.Rectangle.fromDegrees(
              -90.0,
              30.0 + i,
              -70.0,
              35.0 + i
            )
          }, false),
          material: new Cesium.ImageMaterialProperty({
            image: new Cesium.CallbackProperty(drawCanvas, false),
            transparent: true,
          }),
          rotation: new Cesium.CallbackProperty(getRotationValue, false),
          stRotation: new Cesium.CallbackProperty(getRotationValue, false),
        },
      })
      viewer.zoomTo(viewer.entities)

标签:控件,canvas,false,动画图片,viewer,let,Cesium
From: https://www.cnblogs.com/hustshu/p/17101592.html

相关文章

  • cesium修改TileCoordinatesImageryLayer源码实现随机颜色,点选显示坐标
    cesium修改TileCoordinatesImageryLayer源码实现随机颜色,点选显示坐标。1、修改函数requestImage:实现了随机颜色的瓦片覆盖。TileCoordinatesImageryProvider.prototype.......
  • vue实现canvas画很多条线,点击那条线就删除那条线需求。
    公司最近提了个新需求,就是要在canvas画板上要画许多条线,点击那条线就删除那条线的功能,刚开始我用的原生canvas,很麻烦并不容易实现。于是改变思路,用到了'KonvaJS'1、KonvaJ......
  • Cesium通过自定义着色器实现倾斜压平
    实现原理PS:使用customShader实现倾斜压平,没改源码获取模型的顶点数据后转以模型中心点的局部坐标系下(这里把所有点数据都在统一的局部坐标系下处理)把绘制的范围转为模......
  • Cesium实现镜面反射
    实现原理计算反射相机与当前相机相对于水面,呈镜面对称的相机从反射相机的角度绘制一张纹理图获取反射相机纹理图对应的UV坐标在反射相机的MVP矩阵的V之前乘以反......
  • 低代码平台前端的设计与实现(三)设计态画布DesignCanvas的设计与实现
    上一篇文章,我们分析并设计了关于构建引擎BuildEngine的切面设计。本文我们将基于BuildEngine所提供的切面处理能力,在ComponentBuildAspectHandler中通过一些逻辑,来完成一个......
  • Cesium 加载GeoJson数据,看不到实体效果
    问题我真的不知道为什么几乎每次要用Cesium加什么东西,不管是点线面还是图层,总是不顺利要加载一个GeoJson数据,数据包含几个点,需要展示点的位置和标签名称。用以下代码,打印......
  • cesium背景透明
    constviewer=newCesium.Viewer("cesiumContainer",{orderIndependentTranslucency:false,contextOptions:{webgl:{alpha:true,},},}......
  • Cesium之影像底图加载
    1.引言Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业......
  • Cesium 在antd pro 框架下使用问题
    刚开始也是按官网的操作,报Youmayneedanappropriateloadertohandlethisfiletype,currentlynoloadersareconfiguredtoprocessthisfile错误,然后试图配置co......
  • Cesium entity 跳动点 利用CallbackProperty
    startBounce(){constimage=require('./logo.png');constheight=44;conste={lng:116.4,lat:39.14,opts:{......