最近研究了一下如何用skyline快速构建基于.net的GIS系统,现做阶段性小结:
Q1.winform窗体是否允许加载多个3D窗口
A:答案是否,我在项目中不管是一个窗体上还是在一个程序中不同窗体上加载多个3D窗口均会报错,咨询技术人员发现这是不允许的,一个进
程只允许一个3D窗口。但是项目要求有多个窗口并且要实现同步跟踪,于是我的解决方法是通过文件共享位置信息的方法,在主窗口中实时记录
每一帧的视点信息,TerraExplorerClass的onframe事件是对每一帧的变化作出动作,可以在这个事件中取到当前视点信息(GetPosition),
并将视点信息写到外部某文件中,子窗口的onframe事件读取视点信息并设置当前视点,注意在这里主窗口和子窗口是两个不同的winform程
序(两个工程),仅仅通过共享文件来通信,读取和写入文件的时候注意文件的共享属性。
Q2.主窗口程序和子窗口程序当窗体失去焦点时3D漫游停止?
A:感觉skyline内部对3D窗口有锁的机制,如果不设置,任何skyline程序只能在获取到焦点(变成激活窗体)之后才能实现漫游,否则漫游就
会停止,解决方法是在窗体加载时通过接口ITerraExplorer51的SetParam方法设置参数,
例如ITerraExplorer51.SetParam(7000,2);这是隐藏参数,手册里没有。