Cesium添加GIF图 libgif.js+Cesium.CallbackProperty

16 篇文章 5 订阅

Cesium添加GIF图

cesium是canvas画出来的界面,如果直接写入gif图的话,cesium只会识别到一帧的动图并显示一帧的的画面
通过libgif.js加上cesium实现动画的Cesium.CallbackProperty来实现gif在cesium中动态展示效果

1.libgif.js(libgif项目地址--------------------或github仓库

使用目的:通过libgif工具js将gif图拆解成一帧一帧的图片

2.Cesium.CallbackProperty

CallbackProperty是一个类,它在不断地自我调用,每当返回的对象有改变,就抛出改编后的值更新视图

通过CallbackProperty去处理libgif拆解的一帧一帧的图片,更新视图显示

代码

viewer = new Cesium.Viewer('cesiumContainer');
let gifimg = document.getElementById('one')//gif图片
let superGif = new SuperGif({
  gif: gifimg
});
superGif.load(function () {
  let material = new Cesium.ImageMaterialProperty({
    image: new Cesium.CallbackProperty(() => {
      return superGif.get_canvas().toDataURL('image/png');
    }, true),
    repeat: new Cesium.Cartesian2(1, 1)
  });
  viewer.entities.add({
    id: 'tttt',
    name: 'a',
    type: "marker",
    position: Cesium.Cartesian3.fromDegrees(120, 30, 0),
    ellipse: {
      semiMinorAxis: 150000.0,
      semiMajorAxis: 150000.0,
      material
    },
    label: {
      text: 'gif纹理',
      font: '20px 微软雅黑',
      style: Cesium.LabelStyle.FILL_AND_OUTLINE,
      outlineColor: new Cesium.Color.fromCssColorString("tranparent"),
      fillColor: new Cesium.Color.fromCssColorString("#fff"),
      scaleByDistance: new Cesium.NearFarScalar(1.5e2, 2.0, 1.5e7, 0.5),//控制缩放
      outlineWidth: 5,
      verticalOrigin: Cesium.VerticalOrigin.CENTER,
    },
  })
});
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值