一般在系统的开发中,TE创建动态对象是用Creator下的CreateDynamicObject,这个方式是sdk封装好的,但是在拐弯方面的调整需要一定的技巧。
TE的样例中,还提供了另一种方式的动态对象创建,并且有示例的JavaScript脚本代码,这个动态对象的创建思路是通过创建一个模型,根据时间的变化,动态的更改模型的位置,位置的变化在onframe中,变化频率是很高的,显示出来的效果也比较连贯。
样例JavaScript代码比较简单,如下所示:
//创建一个默认位置
var pos = _sgworld.Creator.CreatePosition(-122.38050, // x
37.62331, // y
40.0, // height
297.0, // yaw
15.0, // pitch
0, // roll
0 // dist
);
//在默认位置上创建一个模型
model = _sgworld.Creator.CreateModel(pos, "D:\\c5.xpc", 1);
model.Attachment.AutoDetach = false;
//飞到模型
_sgworld.Navigate.FlyTo(model);
//在onframe中实现,具体挂接onframe参见api文档
function sOnFrame() {
//判断model对象不为空
if(model) {
//根据距离和角度移动模型位置,样例中是绕圈移动模型
var distToMove = (400 * 1000 / 3600) * (new Date().getTime() - time.getTime()) / 1000;
model.Position = model.Position.Move(distToMove, model.Position.Yaw + 0.1, model.Position.Pitch);
//更新时间
time = new Date();
}
效果图: