ArcGIS Engine二次开发 - 基础篇 联系客服

发布时间 : 星期四 文章ArcGIS Engine二次开发 - 基础篇更新完毕开始阅读c1826921192e45361066f5ac

ArcGIS Engine二次开发——基础篇

InitializeComponent();

this.mMapControl = mapControl; }

在窗体的Load事件中添加代码,用于初始化cboLayer,获取MapControl中的图层名称,并初始化查询方式,代码如下:

//MapControl中没有图层时返回 if (this.mMapControl.LayerCount <= 0) return;

//获取MapControl中的全部图层名称,并加入ComboBox //图层 ILayer pLayer; //图层名称

string strLayerName;

for (int i = 0; i < this.mMapControl.LayerCount; i++) {

pLayer = this.mMapControl.get_Layer(i); strLayerName = pLayer.Name; //图层名称加入ComboBox

this.cboLayer.Items.Add(strLayerName); }

//加载查询方式

this.cboMode.Items.Add(\矩形查询\); this.cboMode.Items.Add(\线查询\); this.cboMode.Items.Add(\点查询\); this.cboMode.Items.Add(\圆查询\);

//初始化ComboBox默认值 this.cboLayer.SelectedIndex = 0; this.cboMode.SelectedIndex = 0;

在“确定”按钮添加代码如下:

//设置鼠标点击时窗体的结果 this.DialogResult = DialogResult.OK; //判断是否存在图层

if (this.cboLayer.Items.Count <= 0) {

MessageBox.Show(\当前MapControl没有添加图层!\,\提示\); return; }

//获取选中的查询方式和图层索引

ArcGIS Engine二次开发——基础篇

this.mLayerIndex = this.cboLayer.SelectedIndex; this.mQueryMode = this.cboMode.SelectedIndex;

这样我们就完成了空间查询窗体的设计。查询结果的显示我们将放到下一节实现。

1.7.7 主窗体功能实现

至此,程序的框架已经搭建完毕,我们来依次完成每个功能。在这个项目中,我们需要添加ArcEngine中如下的命名空间:

using ESRI.ArcGIS.Geometry; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.SystemUI; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.Geodatabase;

我们可以直接添加,也可以在编写代码的过程中,根据需要在帮助文档中查找对应的接口所在的命名空间进行添加。另外,在该项目中,我们在菜单栏的“视图”选项中添加了跟工具栏一样的地图浏览的功能,菜单栏里面的相关功能我们使用我们自己设计的类来进行实现,工具栏中我们采用ArcEngine的封装类来实现。下面开始动手。

首先我们需要定义一个成员变量,用于标记当前选中的工具类型。

private string mTool;

1.7.7.1 文件操作实现

菜单的“文件”操作,包含“打开mxd”、“添加数据”和“退出”三个选项。我们依次实现。

1) 打开mxd。单击菜单控件上的“文件”选项,并选择二级菜单中的“打开mxd”,双击“打开mxd”,进入代码编写界面。向其中添加如下代码:

//文件路径名称,包含文件名称和路径名称 string strName = null;

//定义OpenFileDialog,获取并打开地图文档

OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Title = \打开MXD\;

openFileDialog.Filter = \文件(*.mxd)|*.mxd\; if (openFileDialog.ShowDialog() == DialogResult.OK) {

strName = openFileDialog.FileName; if (strName != \) {

this.axMapControl1.LoadMxFile(strName); } }