【Cesium学习笔记】三、画点、画线、画多边形

【Cesium学习笔记】三、画点、画线、画多边形


Ps:本教程所有代码于同一个工程中,运行npm run dev默认首页为App.vue,只需替换App.vue的内容即可切换不同页面。

将上一节的App.vue保存为类似"隐藏控件和按钮.vue"这种对应名称。

一、在Cesium中添加实体

Cesium中添加元素的方式都是在Cesium的Viewer中添加Entity(实体),再在实体中添加关联的形状。

以下是常见的关联形状:

名称 描述
billboard 广告牌
box
cylinder 圆柱体
ellipse 椭圆
ellipsoid 椭球
label 标注
model 模型
plane 平面
point
polygon 多边形
polyline 折线
rectangle 矩形
wall

具体可参考Cesium Entity 中文说明

二、画点

通过以下代码在entity中关联一个白色的点,点的大小不随鼠标拉远拉近而改变。

javascript 复制代码
  const point = viewer.entities.add({
    id: 'point', // 设置实体的唯一标识符
    position: Cesium.Cartesian3.fromDegrees(102.7, 25.1), // 设置点的位置,经度为102.7度,纬度为25.1度
    point: {
      pixelSize: 20, // 设置点的像素大小为20
      color: Cesium.Color.WHITESMOKE, // 设置点的颜色为白色
    }
  })
  viewer.zoomTo(point) // 将视图缩放到确保点完全可见的级别

三、画线

新建entity并添加关联的线:

javascript 复制代码
  const polyline = viewer.entities.add({
    polyline: {
      // 将经纬度数组转换为Cartesian3坐标数组,定义折线的各个点位
      positions: Cesium.Cartesian3.fromDegreesArray([102, 25, 103, 25, 104, 25.5]),
      width: 10, // 定义折线的宽度
      material: Cesium.Color.YELLOW, // 定义折线的材质为黄色
    }
  })

四、画多边形

新建polygon的entity在关联多边形

javascript 复制代码
  const polygon = viewer.entities.add({
    polygon: {
      // 定义多边形的层次结构,包含多边形的顶点位置。
      hierarchy: {
        positions: Cesium.Cartesian3.fromDegreesArray([102, 25, 103, 23, 104, 23, 104, 25])
      },
      // 设置多边形的材质颜色。
      material: new Cesium.Color(1, 53, 19),
      // 设置多边形相对于地形的高度。
      height: 100000,
      // 设置多边形 extrudedHeight 属性,形成立体效果。
      extrudedHeight: 200000,
      // 是否显示多边形轮廓。
      outline: true,
      // 设置多边形轮廓颜色。
      outlineColor: Cesium.Color.WHITE,
      // 是否填充多边形内部。
      fill: false,
    }
  })

五、组合的实体

将一个entity与多个形状关联,即可成组合实体。

javascript 复制代码
  // 组合的实体
  const entity = viewer.entities.add({
    position: new Cesium.Cartesian3.fromDegrees(120, 30, 100), // 定位实体的位置
    billboard: { // 添加一个billboard,即一个图片标记
      image: '/src/assets/goutou.png', // 指定图片路径
      scale: 0.3, // 图片缩放比例
      color: Cesium.Color.RED, // 图片颜色
    },
    label: { // 添加文本标签
      text: '狗头工厂', // 标签文本内容
      font: '13px', // 字体大小
      fillColor: Cesium.Color.WHITE, // 文本颜色
      pixelOffset: new Cesium.Cartesian2(0, -40), // 文本相对于标记的偏移量
    },
    polyline: { // 添加多段线
      positions: Cesium.Cartesian3.fromDegreesArrayHeights([120, 30, 0, 120, 30, 100]), // 线段的两个点,带高度
      material: Cesium.Color.WHEAT, // 线段的材质颜色
    },

  })
  viewer.zoomTo(entity) // 缩放到包含该实体的视图级别

这个组合图形有个很有意思的地方们就是原来做billboard广告牌的图片是白色的,但是将color属性设置为红色,就会对图片进行上色显示。

以上就是本期画图笔记,可以使用其他表中提到的形状进行尝试。

相关推荐
民乐团扒谱机1 小时前
【微实验】数模美赛备赛MATLAB实战:一文速通各种“马尔可夫”(Markov Model)
开发语言·人工智能·笔记·matlab·数据挖掘·马尔科夫链·线性系统
菜的不敢吱声1 小时前
swift学习第2,3天
python·学习·swift
宵时待雨1 小时前
数据结构(初阶)笔记归纳1:复杂度讲解
c语言·数据结构·笔记
l04090442221 小时前
想学习VLN相关的知识,并亲手搭建一套系统,该如何入手?
学习
今儿敲了吗1 小时前
第二章 C++对C的核心拓展
c++·笔记
weixin_433179332 小时前
《旋元佑进阶文法》之 句型
笔记·英语语法
山土成旧客2 小时前
【Python学习打卡-Day36】实战重构:用PyTorch神经网络升级信贷预测项目
python·学习·重构
麻雀无能为力2 小时前
VAE(变分自编码器 Variational Auto-Encoder)学习笔记
笔记·学习
挽天java2 小时前
X86汇编语言期末复习
学习
北岛寒沫2 小时前
北京大学国家发展研究院 经济学原理课程笔记(第十九课 长期经济增长)
经验分享·笔记·学习