📌预览
📌代码
<template> <div id="root-container" ref="rootContainer" class="root-container"> <div class="left-top-plugin"> <el-button type="primary" plain @click="start" :disabled="isBtn1Disabled()">开始 </el-button> <el-button type="warning" plain @click="drawPolygonEdit" :disabled="isBtn2Disabled()">编辑模式</el-button> <el-button type="danger" plain @click="drawPolygonRemove" :disabled="isBtn4Disabled()">清除全部</el-button> </div> </div></template>import { onMounted, onUnmounted, ref } from "vue";import { Cartesian3, Color, PolylineGraphics, Viewer } from 'cesium';import { DRAW_STATUS, RectGauger, } from "cesium-pocket/gauger";import { ElButton } from 'element-plus'
const rootContainer: any = ref(null);const viewer = ref<Viewer | null>(null)const status = ref(null)let rectGauger: any = null
onMounted(() => { viewer.value = //你获取的viewer init()});
onUnmounted(() => { if (viewer.value && !viewer.value.isDestroyed()) { viewer.value.destroy(); viewer.value = null; }});
const isBtn1Disabled = () => { return rectGauger != null && status.value != DRAW_STATUS.STOPED}
const isBtn2Disabled = () => { return status.value != DRAW_STATUS.DRAWABLE && status.value != DRAW_STATUS.DELETABLE}
const isBtn4Disabled = () => { return status.value != DRAW_STATUS.DRAWABLE && status.value != DRAW_STATUS.EDITABLE && status.value != DRAW_STATUS.DELETABLE}
const init = () => { let polylineObj: PolylineGraphics.ConstructorOptions = { positions: [new Cartesian3(), new Cartesian3()], width: 2, material: Color.ORANGERED, clampToGround: true }
let polygonObj = { hierarchy: [new Cartesian3(), new Cartesian3(), new Cartesian3()], material: Color.ORANGERED.withAlpha(0.5), outline: false, }
let options = { polyline: polylineObj, polygon: polygonObj } rectGauger = new RectGauger(viewer.value as Viewer, options)}
const start = () => { rectGauger.start() status.value = rectGauger.getStatus()}
const drawPolygonEdit = () => { rectGauger.setEditStatus() status.value = rectGauger.getStatus()}
const drawPolygonRemove = () => { rectGauger.clearAll() status.value = rectGauger.getStatus() init()}.root-container { position: relative; width: 100wh; height: 100vh; overflow: hidden; }
.left-top-plugin { position: absolute; top: 20px; left: 10px; z-index: 10; }📌操作步骤及流程
- 点击“开始”进入绘制模式,可绘制矩形面,同时计算面积
- 点击“进入编辑模式”开始编辑。鼠标变手型抓取时按住鼠标左键可拖拽节点,松开则放弃编辑。面积同时更新
- 点击“删除全部”可删除矩形面。
- 可自定义节点、和面的实体要素
📌构造函数参数列表(new RectGauger(...))
| 序号 | 名称 | 类型 | 必须? | 默认值 | 含义 | 备注 |
|---|---|---|---|---|---|---|
| 1 | viewer | Cesium.Viewer | 是 | - | viewer对象 | - |
| 2 | options{ ... } | RectOptions | 否 | - | 其他参数 | 参数集对象 |
| 2-1 | options.point | Cesium.PointGraphics.ConstructorOptions | 否 | - | Entity的PointGraphics参数项 | - |
| 2-2 | options.polygon | Cesium.PolygonGraphics.ConstructorOptions | 否 | - | Entity的PolygonGraphics参数项 | - |
| 2-3 | options.polyline | Cesium.PolylineGraphics.ConstructorOptions | 否 | - | Entity的PolylineGraphics参数项 | - |
| 2-4 | options.rectOverFun | (startPoint: Cartesian3, endPoint: Cartesian3) => void | 否 | - | 绘制结束时的回调函数 | - |
| 2-5 | options.rectMovingFun | (startPoint: Cartesian3, endPoint: Cartesian3) => void | 否 | - | 绘制移动时的回调函数 | - |
| 2-6 | options.rectEditFun | (startPoint: Cartesian3, endPoint: Cartesian3) => void | 否 | - | 绘制编辑拖拽时的回调函数 | - |
📌API方法列表
| 序号 | 方法名 | 入参 | 返回值 | 含义 | 备注 |
|---|---|---|---|---|---|
| 1 | start | - | void | 开启绘制矩形面 | - |
| 2 | getEntity | - | Cesium.Entity | 获得矩形面Entity | - |
| 3 | getDataSource | - | Cesium.DataSource | 获得点所有节点的DataSource | - |
| 4 | getPositions | - | Cartain3[] | 获得点所有节点的坐标 | - |
| 5 | clearAll | - | - | 清除所有对象 | - |