Cesium.CallbackProperty——如何应用于鼠标动态绘制测量线/面

最近学习Cesium过程中,研究了前人关于如何通过鼠标量测距离和面积的代码。在实验过程中,对于点线面如何根据鼠标移动位置实现动态绘制产生了疑问。如图所示:
前人代码

代码表明, Cesium.ScreenSpaceEventType.MOUSE_MOVE函数响应中并没有涉及关于动态绘制的内容,仅是对鼠标的移动位置“activeShapePoints”进行了存储。代码中关于绘图的函数"drawShape()"仅出现在Cesium.ScreenSpaceEventType. LEFT_CLICK中。

此时,笔者注意到了LEFT_CLICK中的一个未知函数Cesium.CallbackPropert,通过查阅发现其为Cesium提供的一种回调函数,系统会不断自动调用该函数,若其中属性发生变化则有关于该属性的相关代码会重新执行(不是再次执行!),这正是实现动态实时绘图的关键!

原理:在MOUSE_MOVE中代码会实时更新activeShapePoints中的内容,CallbackPropert会不断读取更新后的activeShapePoints,重新执行代码即重绘,从而达到了动态绘图的效果。

最后,笔者做了个简单的实验,定义数字变量Atimes和Btimes,查看控制台内容。明显发现,Atimes只执行了一次,但是Btimes会无止境的执行下去。这验证了上述的原理。如下所示:
在这里插入图片描述
在这里插入图片描述

文中”前人代码“代码来源于:https://blog.csdn.net/ljy1998dsb/article/details/124055029

猜你喜欢

转载自blog.csdn.net/HeyLoong/article/details/126230219
今日推荐