cesium Billboard Label 面向屏幕

cesium中的Billboard Label在旋转地球的时候始终是面向屏幕的,如果想实现Billboard Label贴在地表上,不随视角转动而变化,可以转换思路,用polygon或者rectangle采用图片材质实现。

1、Billboard

实现Billboard贴在地表上比较简单,可以直接转成polygon+ImageMaterialProperty实现。

let p1 = [115.000454, 37.000292];
            let p2 = [114.999768, 37.00046];
            let p3 = [114.999322, 37.000266];
            let p4 = [114.999351, 36.999761];
            let p5 = [115.000598, 36.999793];
            viewer.entities.add({
                polygon: {
                    hierarchy: Cesium.Cartesian3.fromDegreesArray([p1[0], p1[1], p2[0], p2[1], p3[0], p3[1], p4[0], p4[1], p5[0], p5[1]]),
                    material: new Cesium.ImageMaterialProperty({
                        image: `/img.png`
                    }),
                }
            });

2、Label

实现Label贴在地表上原理和Billboard一致,但是Label是文字,并不是一张图片,这时候可以用canvas画一张图片作为material的image,画出来的图片也是指向正北方向。

let p1 = [115.000454, 37.000292];
            let p2 = [114.999768, 37.00046];
            let p3 = [114.999322, 37.000266];
            let p4 = [114.999351, 36.999761];
            let p5 = [115.000598, 36.999793];
            viewer.entities.add({
                polygon: {
                    hierarchy: Cesium.Cartesian3.fromDegreesArray([p1[0], p1[1], p2[0], p2[1], p3[0], p3[1], p4[0], p4[1], p5[0], p5[1]]),
                    material: new Cesium.ImageMaterialProperty({
                        image: drawText()
                    }),
                }
            });


function drawText(style) {
            const text = 'hello world';
            var c = document.createElement("canvas");
            c.width = 130;
            c.height = 30;
            var ctx = c.getContext("2d");

            ctx.fillStyle = '#f00';
            ctx.font = "14 px 微软雅黑";
            ctx.textBaseline = 'hanging';
            //绘制文本  
            ctx.fillText(text, 5, 5);
            return c;
        }

代码下载地址:https://download.csdn.net/download/AllBluefm/88802087

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值