【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属性设置为红色,就会对图片进行上色显示。

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

相关推荐
数据皮皮侠37 分钟前
最新上市公司业绩说明会文本数据(2017.02-2025.08)
大数据·数据库·人工智能·笔记·物联网·小程序·区块链
杜子不疼.1 小时前
《Python学习之使用标准库:从入门到实战》
开发语言·python·学习
search71 小时前
前端学习 10 :SOC设计中的验证
学习
艾莉丝努力练剑2 小时前
【C语言16天强化训练】从基础入门到进阶:Day 1
c语言·开发语言·数据结构·学习
tomelrg2 小时前
多台服务器批量发布arcgisserver服务并缓存切片
服务器·python·arcgis
Magnetic_h2 小时前
【iOS】锁的原理
笔记·学习·macos·ios·objective-c·cocoa·xcode
Olrookie2 小时前
ruoyi-vue(十一)——代码生成
笔记·后端
yuxb733 小时前
Ansible 学习笔记:变量事实管理、任务控制与文件部署
linux·运维·笔记
鸢栀w3 小时前
前端css学习笔记7:各种居中布局&空白问题
前端·css·笔记·学习·尚硅谷网课
Hero_11274 小时前
学习Stm32 的第一天
stm32·嵌入式硬件·学习