Cesium功能实现(一)创建billboard广告牌

Cesium可实现功能之billboard广告牌

最近在学习cesium,试着实现了billboard功能模块,但在实现过程中遇到一些问题,就记录下来。

Cesium官方API

官网链接https://cesium.com/learn/cesiumjs/ref-doc/Billboard.html

成员变量及中文释义

MembersValue
alignedAxis获取或设置世界空间中的对齐轴
color获取或设置与广告牌纹理相乘的颜色
disableDepthTestDistance获取或设置与相机的距离
distanceDisplayCondition获取或设置条件,该条件指定将在距摄像机的距离显示此广告牌。
eyeOffset获取或设置在眼坐标中应用于此广告牌的3D笛卡尔偏移
height获取或设置广告牌的高度
heightReference获取或设置此广告牌的高度参考
horizontalOrigin获取或设置此广告牌的水平原点
id获取或设置选择广告牌时返回的用户定义对象
image获取或设置要用于此广告牌的图像
pixelOffset获取或设置屏幕空间中距此广告牌原点的像素偏移
pixelOffsetScaleByDistance根据广告牌与摄像头的距离,获取或设置广告牌的近像素偏移量和远像素偏移量缩放属性
position获取或设置此广告牌的笛卡尔位置
rotation获取或设置以弧度为单位的旋转角度
scale获取或设置与广告牌的图像大小(以像素为单位)相乘的统一比例
scaleByDistance根据广告牌与相机的距离获取或设置广告牌的近和远缩放属性
show确定是否显示此广告牌
sizeInMeters获取或设置广告牌大小以米或像素为单位
translucencyByDistance根据广告牌到相机的距离,获取或设置广告牌的近和远半透明属性
verticalOrigin获取或设置此广告牌的垂直原点
width获取或设置广告牌的宽度

案例

js和css

先在html中引入cesium.js和css

<!DOCTYPE html>
<html lang="en">
  <head>
    <!-- Use correct character set. -->
    <meta charset="utf-8" />
   
    <script src="./Build/Cesium/Cesium.js"></script>
    <style>
      @import url(./Build/Cesium/Widgets/widgets.css);
    </style>
  </head>
  <body>
    <div id="cesiumContainer"></div>

代码实现

创建广告牌

// 创建一个billboard广告牌
var viewer = new Cesium.Viewer("cesiumContainer");

            var billboard = viewer.entities.add({
            name:"自定义billboard lab",
            position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
            billboard:{
              image: "img/image.jpg",
              show: true, // default
              eyeOffset: new Cesium.Cartesian3(0.0, 0.0, 0.0), // default
              horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // default
              verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // default: CENTER
              scale: 2.0, // default: 1.0
              // color: Cesium.Color.LIME, // default: WHITE
              rotation: Cesium.Math.PI_OVER_FOUR, // default: 0.0
              alignedAxis: Cesium.Cartesian3.ZERO, // default
              width: 25, // default: undefined
              height: 25, // default: undefined
              pixelOffset: new Cesium.Cartesian2(0, -72),
            }
          });
        viewer.zoomTo(billboard);

效果图
在这里插入图片描述

给billboard添加label

在定义一个billboard的基础上,添加label属性

// 创建一个billboard广告牌
var viewer = new Cesium.Viewer("cesiumContainer");

            var billboard = viewer.entities.add({
            name:"自定义billboard",
            position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
            billboard:{
              image: "img/image.jpg",
              show: true, // default
              eyeOffset: new Cesium.Cartesian3(0.0, 0.0, 0.0), // default
              horizontalOrigin: Cesium.HorizontalOrigin.CENTER, // default
              verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // default: CENTER
              scale: 2.0, // default: 1.0
              // color: Cesium.Color.LIME, // default: WHITE
              rotation: Cesium.Math.PI_OVER_FOUR, // default: 0.0
              alignedAxis: Cesium.Cartesian3.ZERO, // default
              width: 25, // default: undefined
              height: 25, // default: undefined
              pixelOffset: new Cesium.Cartesian2(0, -72),
            },
             label: { //文字标签
                    text: "这是一个label文字标签",
                    font: "20px sans-serif",
                    showBackground: true,
                    horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
                    pixelOffset: new Cesium.Cartesian2(0.0, -39.9522222),
                    pixelOffsetScaleByDistance: new Cesium.NearFarScalar(
                      1.5e2,
                      3.0,
                      1.5e7,
                      0.5
                    ),
          });
        viewer.zoomTo(billboard);

效果图在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Cesium创建自定义广告牌,您可以按照以下步骤进行操作: 1. 首先,您需要在Cesium中加载必要的库和资源。您可以从Cesium官方网站下载Cesium库,并将其包含在您的项目中。 2. 创建一个Canvas元素,用于绘制广告牌的内容。您可以使用HTML5 Canvas API绘制图形、文本等。 3. 使用Cesium的Entity API创建一个实体对象,将广告牌与地球上的位置相关联。您可以指定广告牌的位置、旋转角度、大小等属性。 4. 使用Cesium的BillboardVisualizer类创建一个广告牌可视化对象,并将其与实体对象关联起来。这将处理广告牌的渲染和更新。 5. 在渲染循环中,更新广告牌的内容和属性。您可以根据需要更改广告牌的位置、颜色、文本等。 下面是一个简单的示例代码,展示了如何在Cesium创建自定义广告牌: ```javascript // 创建Canvas元素 var canvas = document.createElement('canvas'); canvas.width = 128; canvas.height = 64; var context2D = canvas.getContext('2d'); // 在Canvas上绘制内容 context2D.fillStyle = 'red'; context2D.fillRect(0, 0, canvas.width, canvas.height); context2D.font = 'bold 24px Arial'; context2D.fillStyle = 'white'; context2D.fillText('Custom Billboard', 10, 40); // 创建实体对象 var entity = new Cesium.Entity({ position: Cesium.Cartesian3.fromDegrees(0, 0, 0), }); // 创建广告牌可视化对象 var billboardVisualizer = new Cesium.BillboardVisualizer(scene, entityCollection); billboardVisualizer.update(entity); // 初始化广告牌 // 在渲染循环中更新广告牌 scene.postRender.addEventListener(function() { context2D.fillText('Time: ' + Date.now(), 10, 60); // 更新时间 billboardVisualizer.update(entity); // 更新广告牌 }); ``` 这只是一个简单示例,您可以根据需要进行自定义和扩展。您可以在Canvas上绘制任何内容,并使用Cesium的其他功能来控制广告牌的属性和行为。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值