在一些系统的开发中,方案对比等功能需要加载多个三维球,并实现三维球的联动效果,skyline的三维开发支持多球一起进行加载,达到效果。
具体的功能实现,以BS的开发为例,CS开发中只是控件的加载方式不同:
在窗口上加载多个三维控件,每个控件设置的id不同,CLASSID都是相同的,以下是加载了3个地球窗口控件;
<OBJECT ID="TerraExplorer3DWindowEx" CLASSID="CLSID:3a4f9196-65a8-11d5-85c1-0001023952c1" width="800" height="500">
</OBJECT>
<OBJECT ID="TerraExplorer3DWindowEx1" CLASSID="CLSID:3a4f9196-65a8-11d5-85c1-0001023952c1" width="800" height="500">
</OBJECT>
<OBJECT ID="TerraExplorer3DWindowEx2" CLASSID="CLSID:3a4f9196-65a8-11d5-85c1-0001023952c1" width="800" height="500">
</OBJECT>
在js代码中,定义sgworld对象接口,每个接口需要根据窗口不同的id进行初始化;
SGWorld = TerraExplorer3DWindowEx.CreateInstance("TerraExplorerX.SGWorld70");
SGWorld1 = TerraExplorer3DWindowEx1.CreateInstance("TerraExplorerX.SGWorld70");
SGWorld2 = TerraExplorer3DWindowEx2.CreateInstance("TerraExplorerX.SGWorld70");
接下来,根据TE的API打开3个窗口的fly文件即可;
SGWorld.Project.Open("fly文件地址",false,"","");
SGWorld1.Project.Open("fly1文件地址",false,"","");
SGWorld3.Project.Open("fly2文件地址",false,"","");
要想实现3个球联动的效果,需调用TE API中的以下方法,此方法也可以实现其中几个球有一定的位置差别,而不需要都完全一样;
SGWorld1.Application.Multiple3DWindows.LinkPosition(SGWorld,0,0,0,0,0,0);
SGWorld2.Application.Multiple3DWindows.LinkPosition(SGWorld,0,0,0,0,0,0);
实现效果图:
技术交流群:665060698
微信公众号: