DEJA_VU3D - Cesium功能集 之 026-态势标绘系列完整组件

该博客介绍了基于Cesium的态势标绘系列组件的总结,包括16类20多种几何对象的绘制。作者提供了一个集成所有标绘功能的完整组件,并分享了源代码下载链接,以便读者参考和使用。
摘要由CSDN通过智能技术生成

前言

编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有实现120个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,尽可能把代码简洁一些)。博文内容如存在错误或者有可改进之处,也希望在这里和各位大佬交流提高一下。

介绍

专栏内容本着尽可能简洁的原则,本篇博文是我们态势标绘系列的最终篇。前面我们总共用了16篇文章来介绍并实现了16类共计20余种几何对象的绘制。本篇便是对之前实现的所有标绘功能进行集成,并编写成一个完整的态势标绘组件。因为涉及到的文件太多,所以用资源的形式进行了上传,文章最后会附上资源下载地址,包括所有源代码,有需要的客官可以进行下载。实现效果如图

更多内容/样例/demo说明:​ DEJA_VU3D完整功能目录

考虑到涉及到的文件太多,这里就只贴出来整合后的主类文件代码:

态势标绘组件主类代码

/*
 * 态势标绘组件主类
 * @Author: Wang jianLei
 * @Date: 2022-04-14 21:51:24
 * @Last Modified by: Wang JianLei
 * @Last Modified time: 2022-05-09 00:07:13
 */
import CreateLineArrow from "./lib/CreateLineArrow";
import CreateSwallowtailArrow from "./lib/CreateSwallowtailArrow";
import CreateRightAngleArrow from "./lib/CreateRightAngleArrow";
import CreateRoundRectangle from "./lib/CreateRoundRectangle";
import CreateSector from "./lib/CreateSector";
import CreateBow from "./lib/CreateBow";
import CreatePincerArrow from "./lib/CreatePincerArrow";
import CreateAttackArrow from "./lib/CreateAttackArrow";
import CreateStagingArea from "./lib/CreateStagingArea";
import CreateFlag from "./lib/CreateFlag";
import CreateFreeLine from "./lib/CreateFreeLine";
import CreatePolyline from "./lib/CreatePolyline";
import CreateCurve from "./lib/CreateCurve";
import CreateFreePolygon from "./lib/CreateFreePolygon";
import CreatePolygon from "./lib/CreatePolygon";
import CreateRegularPolygon from "./lib/CreateRegularPolygon";
class MilitaryPlotting {
  constructor(viewer) {
    if (!viewer) throw new Error("no viewer object!");
    this.viewer = viewer;
    this.resultObject = {
      lineArrow: [], //简单箭头Entity集合
      swallowtailArrow: [], //燕尾箭头Entity集合
      rightAngleArrow: [], //直角箭头Entity集合
      roundRectangle: [], //圆角矩形Entity集合
      sector: [], //扇形Entity集合
      bow: [], //弓形Entity集合
      pincerArrow: [], //钳击箭头Entity集合
      attackArrow: [], //进攻箭头Entity集合
      stagingArea: [], //集结地Entity集合
      flag: [], //旗标Entity集合
      freeLine: [], //自由线Entity集合
      polyline: [], //折线Entity集合
      curve: [], //圆滑曲线Entity集合
      freePolygon: [], //自由面Entity集合
      polygon: [], //多边形Entity集合
      regularPolygon: [], //正多边形Entity集合
    };
  }
  /**
   * 创建正多边形
   * @param {*} options 参数{id,color,num}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateRegularPolygon(options, callBack) {
    CreateRegularPolygon(
      this.viewer,
      this.resultObject.regularPolygon,
      options,
      callBack
    );
  }
  /**
   * 创建多边形
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreatePolygon(options, callBack) {
    CreatePolygon(this.viewer, this.resultObject.polygon, options, callBack);
  }
  /**
   * 创建自由面
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateFreePolygon(options, callBack) {
    CreateFreePolygon(
      this.viewer,
      this.resultObject.freePolygon,
      options,
      callBack
    );
  }
  /**
   * 创建圆滑曲线
   * @param {*} options 参数{id,color,width}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateCurve(options, callBack) {
    CreateCurve(this.viewer, this.resultObject.curve, options, callBack);
  }
  /**
   * 创建笔直折线
   * @param {*} options 参数{id,color,width}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreatePolyline(options, callBack) {
    CreatePolyline(this.viewer, this.resultObject.polyline, options, callBack);
  }
  /**
   * 创建自由曲线
   * @param {*} options 参数{id,color,width}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateFreeLine(options, callBack) {
    CreateFreeLine(this.viewer, this.resultObject.freeLine, options, callBack);
  }
  /**
   * 创建倒三角旗标
   * @param {*} options 参数{id,color,type}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateFlag(options, callBack) {
    CreateFlag(this.viewer, this.resultObject.flag, options, callBack);
  }
  /**
   * 创建集结地
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateStagingArea(options, callBack) {
    CreateStagingArea(
      this.viewer,
      this.resultObject.stagingArea,
      options,
      callBack
    );
  }
  /**
   * 创建进攻箭头
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateAttackArrow(options, callBack) {
    CreateAttackArrow(
      this.viewer,
      this.resultObject.attackArrow,
      options,
      callBack
    );
  }
  /**
   * 创建钳击箭头
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreatePincerArrow(options, callBack) {
    CreatePincerArrow(
      this.viewer,
      this.resultObject.pincerArrow,
      options,
      callBack
    );
  }
  /**
   * 创建弓形
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateBow(options, callBack) {
    CreateBow(this.viewer, this.resultObject.bow, options, callBack);
  }
  /**
   * 创建扇形
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateSector(options, callBack) {
    CreateSector(this.viewer, this.resultObject.sector, options, callBack);
  }
  /**
   * 创建圆角矩形
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateRoundRectangle(options, callBack) {
    CreateRoundRectangle(
      this.viewer,
      this.resultObject.roundRectangle,
      options,
      callBack
    );
  }
  /**
   * 创建直角箭头
   * @param {*} options 参数{id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateRightAngleArrow(options, callBack) {
    CreateRightAngleArrow(
      this.viewer,
      this.resultObject.rightAngleArrow,
      options,
      callBack
    );
  }
  /**
   * 创建简单箭头-直线Or曲线
   * @param {*} options {color,id,width,straight}
   * @param {*} callback 回调函数,可直接引用创建的对象
   */
  CreateLineArrow(options, callback) {
    CreateLineArrow(
      this.viewer,
      this.resultObject.lineArrow,
      options,
      callback
    );
  }
  /**
   * 创建燕尾箭头
   * @param {*} options {id,color}
   * @param {*} callBack 回调函数,可直接引用创建的对象
   */
  CreateSwallowtailArrow(options, callBack) {
    CreateSwallowtailArrow(
      this.viewer,
      this.resultObject.swallowtailArrow,
      options,
      callBack
    );
  }
  /**
   * 清除所有创建的对象
   */
  clearAll() {
    for (const key in this.resultObject) {
      if (Object.hasOwnProperty.call(this.resultObject, key)) {
        const element = this.resultObject[key];
        for (let index = 0; index < element.length; index++) {
          const el = element[index];
          this.viewer.entities.remove(el);
          element.splice(index, 1);
          index -= 1;
        }
      }
    }
  }
}
export default MilitaryPlotting;

完整态势标绘组件资源下载地址:Cesium/VUE态势标绘组件完整源代码(未加密+可直接运行)

综上!

如果客官您有问题,可以在本文下留言!

如果客官您有什么建议意见,可以在本文下留言!

如果客官您有批评指正,可以在本文下沟通讨论!

如果实例demo有数据缺失,评论留下您的邮箱地址!

如果客官您有其他的功能需求,可以在本文下留言,不管能不能实现,总会给出回复!

deja_vu3d - cesium是一款功能强大的地球可视化框架。它基于Cesium.js开发,提供了丰富的功能集,可用于创建令人惊叹的三维地球模型。 deja_vu3d - cesium的主要功能包括: 1. 三维地球可视化:deja_vu3d - cesium允许用户展示全球范围内的地理数据,包括地形、海洋、建筑物等。它提供了高度精确的地球模型,可以实时旋转和缩放,让用户以全新的视角探索地球表面。 2. 实时数据可视化:该框架支持对实时数据的可视化,可以将传感器数据、气象数据等实时更新的数据集成到地球模型中。用户可以通过动态的图表、标签和交互式元素来直观地理解数据趋势和模式。 3. 矢量和栅格数据显示:deja_vu3d - cesium支持导入和展示各种矢量和栅格数据。用户可以将自己的地理信息数据集成到地球模型中,进行可视化和空间分析。 4. 相机和视角控制:框架提供了强大的相机和视角控制功能,用户可以自由调整视角、俯瞰地球表面、漫游各个地区。这使得用户能够更好地理解地理空间关系和模式,并更好地展示和交流地理数据。 5. 动画和时间轴:deja_vu3d - cesium允许用户创建动画效果,通过时间轴控制地球模型的演变。这对于展示历史数据、模拟气候变化等具有重要意义。 总而言之,deja_vu3d - cesium是一款功能强大的地球可视化框架,它提供了丰富的功能集,帮助用户创建令人惊叹的三维地球模型,并可可视化和分析各种地理数据。无论是用于科研、教育还是商业应用,deja_vu3d - cesium都能为用户提供出色的地球可视化体验。
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

总要学点什么

相信每一个技术人员的惺惺相惜

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

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

打赏作者

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

抵扣说明:

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

余额充值