Cesium结合Canvas画布创建Billboard

效果图

在这里插入图片描述

在Billboard中使用canvas 画布 ~思路

1、了解billboard实体中的image属性是 可以设置指定图像和纹理的
2、创建canvas画布标签
3、将图片作为背景,使用drawImage进行绘制
4、字体可以根据画布
5、使用Image方法转换画布内容及返回,赋值billboard实体中的image属性即可

实现方式如下:

①、使用原型链进行封装

var canvas = new canvasTopopups({
			width:300,
			height:140,
			font:"35px 楷体"
		});

②、创建画布

//图片对象
		this.style.imageUrl = obj.imageUrl==undefined?"./img/textures/textPnl.png":obj.imageUrl;
		this.style.width = obj.width==undefined?300:obj.width;
		this.style.height = obj.height==undefined?140:obj.height;
		this.style.font = obj.font==undefined?"55px 楷体":obj.font;
		this.style.text = "自定义文字";

		if (!this._canvas) {
			this._canvas = document.createElement("canvas");
			this._canvas.width = this.style.width;
			this._canvas.height = this.style.height;
		}

③、画布设置背景图和文字

        let ctx = canvas.getContext("2d");
		ctx.clearRect(0, 0, canvas.width, canvas.height);
		//绘制图片
		ctx.drawImage(this._pngImage, 0, 0);

		//绘制文字
		ctx.fillStyle = "rgb(255, 255, 255)";
		ctx.font = this.style.font;
		ctx.textBaseline = "middle";
		ctx.textAlign="center"; 
		ctx.fillText(this.style.text, canvas.width/2, canvas.height / 2);

④、canvas转换为Image

        let newImg = new Image(canvas.width, canvas.height);
		newImg.src = canvas.toDataURL("image/png");

		//将图片赋予给矢量对象进行显示,this.image是父类的属性
		this.image = newImg;

⑤、创建billboard实体,并使用Image

        canvas.text = "绿色自定义图标"
		var entity = viewer.entities.add({
			name: "绿色自定义图标",
			position: Cesium.Cartesian3.fromDegrees(longitude, latitude, 3),
			billboard: {
				image: canvas.image,
				scale: 1,
				pixelOffset: new Cesium.Cartesian2(0, -6), //偏移量 
				horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
				verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
				scaleByDistance: new Cesium.NearFarScalar(2000, 0.6, 12000, 0.2),
				distanceDisplayCondition: new Cesium.DistanceDisplayCondition(0, 10000),
			}
		});

纹理图片

在这里插入图片描述

资源下载

根据以上思路无法正常使用的小伙伴,可参考以下资源
脚本资源下载

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Darren~52HZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值