SuperMap二次开发入门(二)第一个程序
1、创建一个工作目录 D:\Myproject。
在【SuperMap iObjects .NET 安装目录】\SampleData\World 中找到数据文件 World.smwu、
World.udd、World.udb。
启动 Visual Studio 2010,然后创建新工程(文件 > 新建… > 项目)。
在已创建好的工作目录 D:\Myproject 下创建一个新工程,在项目类型中选择 Visual C#,在模板中选择Windows 窗体应用程序,设置该工程名称为 GettingStarted。如下图所示:
在安装 SuperMap iObjects .NET 软件的时候,系统会自动将组件注册到 VS2010 的开发环境中。当用户打开工具箱的时候即可看到如图所示的效果。
2、将窗体命名为 FormDemo;将 Workspace 对象添加到窗体中,并命名为 workspace1;将 MapControl控件添加到窗体中,并命名为 mapControl1。在窗体中加入 ToolStrip 工具条,在工具条上添加 Button 按钮,设置如下的属性值(其余属性取默认值即可):
最后,在窗体中添加 OpenFileDialog 控件,命名为 openFileDialog1。上述操作后的结果如下图所示:
3、这里,以打开 SMWU 工作空间为例说明。
在正式编写示范程序之前,需要添加对 SuperMap iObjects .NET 的 Mapping、UI 和 Data 程序集的引用,进入代码编辑器,在最顶端添加如下代码。
using SuperMap.Data;
using SuperMap.Mapping;
using SuperMap.UI;
双击 FormDemo 窗体中的 toolStripOpen 按钮,进入代码编辑器toolStripOpen 的“toolStripOpen_Click”事件。
在“toolStripOpen_Click”事件处理方法中添加如下代码:
//******打开工作空间******
private void toolStripOpen_Click(object sender, EventArgs e)
{
//设置公用打开对话框
openFileDialog1.Filter = "SuperMap 工作空间文件(*.smwu)|*.smwu";
//判断打开的结果,如果打开就执行下列操作
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//避免连续打开工作空间导致程序异常
mapControl1.Map.Close();
workspace1.Close();
mapControl1.Map.Refresh();
//定义打开工作空间文件名
String fileName = openFileDialog1.FileName;
//打开工作空间文件
WorkspaceConnectionInfo connectionInfo = new
WorkspaceConnectionInfo(fileName);
//打开工作空间
workspace1.Open(connectionInfo);
//建立 MapControl 与 Workspace 的连接
mapControl1.Map.Workspace = workspace1;
//判断工作空间中是否有地图
if (workspace1.Maps.Count == 0)
{
MessageBox.Show("当前工作空间中不存在地图!");
return;
}
//通过名称打开工作空间中的地图
mapControl1.Map.Open("世界地图_Day");
//刷新地图窗口
mapControl1.Map.Refresh();
}
}
程序运行结束后,应当释放程序所占用的内存资源,本例结束运行时,需释放 MapControl 控件和Workspace 对象所占用的资源,并且,释放的顺序为:先释放 MapControl 控件,后释放 Workspace 对象占用的资源。因此,按照以下步骤在 FormDemo 窗体的 FormClosing 事件处理方法中添加相应的代码。
① 选择“视图”>“设计器”来显示设计视图。在设计视图中,请选定 FormDemo 窗体。
② 在“属性”窗口中,单击“事件”按钮,如图所示。
③ 选择 FormClosing 事件。
④ 在 文 本 框 中 输 入 FormDemo_FormClosing , 然 后 按 回 车 键 。 随 后 会 创 建 一 个 名 为FormDemo_FormClosing 的事件方法,并在“代码和文本编辑器”窗口中显示,在该事件处理方法中添加释放对象资源的代码,结果如下所示。
// 释放的顺序推荐先释放 MapControl 控件,后释放 Workspace 对象
private void FormDemo_FormClosing(object sender, FormClosingEventArgs e)
{
mapControl1.Dispose();
workspace1.Close();
workspace1.Dispose();
}
运行代码后弹出如下界面,单击工具条上的“打开工作空间文件”按钮,选择示范数据中的 World.smwu工作空间文件,并打开,该工作空间中的“世界地图_Day”地图将显示在地图窗口中。
注释:OpenFileDialog类
OpenFileDialog Class
Provides a dialog box that enables the user to select one or more files.
System.Object
System.Windows.Controls.OpenFileDialog
Namespace: System.Windows.Controls
Assembly: System.Windows (in System.Windows.dll)
OpenFileDialog.ShowDialog Method
Return Value
Type: System.Nullable
true if the user clicked OK; false if the user clicked Cancel or closed the dialog box.
地理信息科学
Writed By NX
QQ:1051926720