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

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

相关推荐
烤麻辣烫44 分钟前
黑马程序员苍穹外卖(新手)DAY6
java·开发语言·学习·spring·intellij-idea
whale fall1 小时前
【剑雅14】笔记
笔记
星空的资源小屋2 小时前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Xudde.2 小时前
Quick2靶机渗透
笔记·学习·安全·web安全·php
AA陈超3 小时前
Git常用命令大全及使用指南
笔记·git·学习
麦麦在写代码4 小时前
前端学习5
前端·学习
愚戏师4 小时前
Python3 Socket 网络编程复习笔记
网络·笔记
降临-max5 小时前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
大白的编程日记.5 小时前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
IMPYLH7 小时前
Lua 的 require 函数
java·开发语言·笔记·后端·junit·lua