一般而言,不管是绘制多边形,还是绘制线,圆等图形,首先我们要考虑绘制它们的前提条件是什么,什么时候开始绘制,什么时候结束绘制,绘制的CesiumAPI是什么等问题的前期思考。
这里我拿鼠标绘制多边形做例子吧(我用js封装了一个实例对象,目前源码没有办法拿给大家,有需要留言,我发给大家)
1.这里我把开始绘制的事件放到鼠标右键菜单中,操作:右击弹出右键菜单,点击绘制多边形
2.鼠标点击绘制的区域,这里要考虑的是,我如何动态收集点击的点,并实时绘制多边型呢,解决办法:
a.定义一个数据,记录点击的点位置信息(可以在cesium鼠标事件中实现)
b.使用CallbackProperty类实现动态绘制多边形的类,使用entities添加polygon中,属性hierarchy可以使用其动态返回点集合,如:
hierarchy: new Cesium.CallbackProperty(() => {
return new Cesium.PolygonHierarchy(这里为记录的点集合);
}, false)
c.使用双击左键结束绘制(使用cesium鼠标事件)
最后,因为绘制多边形,点击时最开始时不会出现多边形的填充形状,这样会给人的体验不是很好,这里我们可以考虑,现定义一个点集合,点击的前两个点使用点的API绘制出两个点的形状,在第三个点的时候就可以删除前两个绘制点,这样我个人感觉这种操作比较友好。
其它的绘制思路是一样的。大家可以动手试一试。
有需要探讨的问题欢迎留言。