SuperMap iClient3D for WebGL教程 轨迹动画(二)KML
WuYK
上篇文章我们说到实现模型动态的一个方法是通过Entity API实现,通过Cesium自带的property机制实现模型的动态效果,这次我们接着讲解第二个方法,通过KML文件实现动态效果
关于如何通过Entity API实现的,可以参考此链接https://blog.csdn.net/supermapsupport/article/details/103006226
**本篇文章主要介绍如何通过KML实现动态效果**
之前也有很多人问过我,为什么我在超图桌面新建的KML,也绘制了轨迹,在WebGL端动不起来呢
那么,今天我们就介绍如何通过桌面端新建的KML文件实现动态效果
关于这个问题,我们首先看一下桌面端的KML文件内容是怎么写的
我们再看下Google上面“能动的” KML文件是什么样
对比一下,其实差别主要是以下两点
一.头文件引用不一样
桌面KML:
GoogleKML:
二.标签Location不一样
桌面KML:
GoogleKML:
从这里我们可以看出,从超图桌面端导出的KML,虽然在桌面端能够实现节点动画的效果,但是在文档里并没有记录满足WebGL动态效果的标签
所以,我们需要对其加上这两条,一个是头文件的引入,还有一个是设置时间节点标签,这样就可以实现在WebGL端动态的效果啦,同时需要注意,KML中的轨迹动画只支持GLTF格式的,S3M格式模型是只能放静态的,如果要对S3M做轨迹动画,请看下一篇文章,轨迹动画(三)-DynamicLayer3D。
补充问题
1.KML动态模型下面会有一条轨迹线,这个怎么去除?
我们在WebGL端加载kml文件有一个回调函数,从回调函数中获取entity模型对象,设置entity.path.show = false即可
2.在kml文件中修改方向标签Orientation没有效果?
同样,在回调函数中获取entity,修改entity.orientation即可
3.怎么让kml模型到了终点就停止运动,而不是反复重复运动?
在回调函数中设置 viewer.clock.clockRange=Cesium.ClockRange.CLAMPED;