第九节 实例四:换掉Micaps的数据检索插件
上面几节的例子实现了给Micaps增加菜单、工具条按钮、浮动窗口等,但仅仅是给Micaps的界面上增加元素(除了全屏功能),却无具体功能。如何让插件与Micaps进行交互呢?这个还是有些难度的,因为这一套大部分是由Micaps开发人员定义的,必须要有详细的文档才能进行。
本节我们将新建一个浮动窗口,在此窗口里实现数据检索功能。在前一节的基础上,在新建的用户控件中放入TreeView控件,然后递归遍历综合图目录中的文件添加到TreeView中,为了方便,还可以给它加上右键菜单、工具条等。这些都是C#的基础知识,我这里就不罗嗦了(直接将我做的FreeMicaps的数据检索控件移植过来)。
本插件的关键是在插件代码中让Micaps打开选中的文件并显示出来。看如下代码:
/// <summary> /// 打开文件 /// </summary> /// <param name="fn"></param> private void OpenFile(string fn) { if (System.IO.File.Exists(fn)) { Cursor.Current = Cursors.WaitCursor; try { //取得当前视图 IRenderView activeViewContent = WorkspaceSingleton.Workspace.ActiveViewContent as IRenderView; OpenLayer(activeViewContent, fn); } catch (Exception exp) { ShowExceptionMessage(exp.Message); } finally { Cursor.Current = Cursors.Default; } } } /// <summary> /// 在指定View中打开文件 /// </summary> /// <param name="view"></param> /// <param name="fileName"></param> internal static void OpenLayer(IRenderView view, string fileName) { if (view != null) { ILayer item = FileService.OpenLayerFile(fileName); if (item != null) { view.Layers.Add(item); } } }
两个函数实现了打开文件的代码。过程是这样:
1、 取得当前视图(就是地图区域)
2、 根据要打开的文件创建图层
3、 将图层加入当前视图中
在我们的TreeView里单击文件名时,调用OpenFile()函数,Micaps即可在当前视图中打开显示数据。
有了这两个函数,就可以发挥想象力,做出更加好用的数据检索窗口来。
好了,编译好后,运行Micaps,左边的已经有了我们新山寨出来的数据检索浮动窗口:
例子中,我还给它添加了一个能够定制的定制的工具条,以方便切换综合图和数据路径,另外,还增加了右键菜单,用来实现更多操作,直接就能编辑查看综合图和数据文件内容。是不是很方便?呵呵。