Cesium 解决两个billboard重叠问题

有时我们会在同一个坐标点叠加两个图片,但是Cesium中没有z-index的概念,因为cesium中是利用深度来区分先后的,所以这两个图片的层级关系我们控制不了,会出现一个图片被另一个遮挡的情况。

针对这种情况,我采用了canvas将两个图片合并成了一个,然后添加这新的图片到地图上即可。注意下,这个合并图片的过程是异步的,所以有些操作要在回调里写。一下晒出代码及效果:

合并后如下:


代码如下:
 

// 合并图片
drawAndShareImage(bgsrc, src, fun) {
      let canvas = document.createElement("canvas");
      canvas.width = 80;
      canvas.height = 178;
      let context = canvas.getContext("2d");
      context.rect(0, 0, canvas.width, canvas.height);
      let bgImg = new Image();
      bgImg.src = bgsrc; // 背景图的url
      bgImg.crossOrigin = "Anonymous";
      bgImg.onload = () => {
        context.drawImage(bgImg, 0, 0, 80, 178);
        let img = new Image();
        img.src = src; // 需要合进去的图片url
        img.crossOrigin = "Anonymous";
        img.onload = () => {
          context.drawImage(img, 16, 12, 48, 48);
          let base64 = canvas.toDataURL("image/png");
          if (fun) fun(base64);
        };
      };
    },

本地调用如下:
 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值