ps:如果可以的话,希望大家能给我个star,好让我有更新下去的动力;
实现原理:
- 其中实现动态绘制的原理主要是利用了callbackproperty(property总结),核心的难点是处理好标绘对象的状态管理,我在类中使用了一个state属性来进行了管理,用其控制何时开始绘制、何时结束绘制、何时开始编辑等。
此类库提供了多种方法,如转geojson、加载geojson等。 - 整个类库我分为了三个部分:basePlot(所有标绘的父类)、createxxx(单个标绘)、drawTool(我称之为标绘管理工具)。
假设我现在想绘制一个线对象,那么我有以下两种方式:- 通过引入单个createXXX.js,然后new此对象即可。
import Polyline from "./js/plot/CreatePolyline.js"; let line = new Polyline(viewer,{}); line.start();
- 通过引入drawTool,然后new DrawTool ,然后调用其start方法,传入不同的参数(推荐此种方法,因为可以通过on进行状态监听)。
import Tool from "./js/plot/drawTool.js" plotDrawTool = new Tool(viewer, { canEdit: true, }); // 监听不同的状态:如开始标绘、标绘结束、开始编辑等 plotDrawTool.on("endCreate", function (entObj, ent) { // 标绘结束时执行 ...... }); plotDrawTool.start({ "name": "线", "type": "polyline", "iconImg": "./easy3d/images/plot/polyline.png", "styleType": "polyline", "style": { "clampToGround": true, "color": "#ffff00" } });
以上是此库一个大致的介绍,具体调用和开发请参考开发文档。
更多案例地址(我们持续更新):
- 标绘插件:
github: https://github.com/gitgitczl/cesiumExp-plot
码云: https://gitee.com/caozl1132/cesiumExp-plot - 气泡窗插件:
github: https://github.com/gitgitczl/cesiumExp-prompt
码云: https://github.com/gitgitczl/cesiumExp-prompt