从前面学习的内容可以知道,IMapControl2是图层控件的接口,但是这个接口的方法到底有什么?

通过学习一节课显然是不足的,因此,Help文件就成为了我们突破的关键口,也正好借此次机会,深化对于官方Help的了解程度

IMapControl2 Interface

// 引入命名空间
using ESRI.ArcGIS.Controls

Provides access to members that control the MapControl. Note: the IMapControl2 interface has been superseded by IMapControl4. Please consider using the more recent version.

提供对控制MapControl的成员的访问。注意:IMapControl2接口已被IMapControl4取代。请考虑使用最新版本(为了给大家讲解我这里就不换了)。

Product Availability
Available with ArcGIS Engine.

Description

The IMapControl2 interface is a starting point for any tasks related to the MapControl, such as setting general appearance, setting map and display properties, adding and managing data layers and map documents, and drawing and tracking shapes

IMapControl2接口是与MapControl相关的任何任务的起点,例如设置通用外观、设置地图和显示属性、添加和管理数据层和地图文档,以及绘制和跟踪形状

换句话就是,对于可视化图层的直接管理

Members
为了保证代码可行性和书写页面简洁性,我保证完全正确的代码但是不给出图片

为了项目简洁性,我新建Windows窗口项目

ArcEngine二次开发:IMapControl2到底有什么?他为什么存在?_图层


先来看第一个(在开发文档中其数据成员和方法是混杂的)

IMapControl2.AboutBox Method,是一个方法
作用:AboutBox方法会在MapControl的顶部显示一个模态对话框,包含关于MapControl的版本和创建日期的信息,以及ESRI的相关法律和版权信息。

示例代码

[C#]
public
void // 返回值是void
AboutBox (
);

由前面可以知道,和ArcMap一样,一切皆按钮,只有操作了才会进行相应的操作

新建一个按钮(button),后面新建按钮类似不做概述了

ArcEngine二次开发:IMapControl2到底有什么?他为什么存在?_图层_02


双击进入按钮函数

private void button1_Click(object sender, EventArgs e)
{
axMapControl1.AboutBox();
}

来看看效果

ArcEngine二次开发:IMapControl2到底有什么?他为什么存在?_示例代码_03


来看看第二个

IMapControl2.ActiveView Property,是一个属性
作用:这是MapControl中包含的地图上的ActiveView

care:

activeview代表激活试图,它可以是数据视图,也可以是布局视图,但在任何情况下只有一个视图被激活。map对象相当于数据框,多个相同空间参考的图层组成map对象

示例代码

[C#]
public
IActiveView // 可知他的数据类型是IActiveView类型
ActiveView {get;}

我们先新建一个按钮(button):活跃图

处于他的数据类型的特殊性,我们直接找到他所在的类,使用其clear方法

private void button2_Click(object sender, EventArgs e)
{
IActiveView iac = axMapControl1.ActiveView;
iac.Clear();
}

ArcEngine二次开发:IMapControl2到底有什么?他为什么存在?_控件_04


ArcEngine二次开发:IMapControl2到底有什么?他为什么存在?_控件_05

接下来的是

IMapControl2.AddLayer Method,是一个方法
作用:当一个层被添加到MapControl的层集合中并且没有指定索引时,它被添加到集合的开始或顶部,索引为0。层集合中任何其他层的数字索引递增1。
当添加Layer并指定索引时,层集合中任何其他层的数字索引将增加1,但索引小于指定索引的那些层除外。这些层的索引将保持不变。

示例代码

[C#]
public
void
AddLayer (
ILayer Layer, // 要添加的图层
int toIndex // 插入的位置(没有指定则插入到0)
);

可选参数

Optional Values
toIndex Supply 0 as a default value. // 默认为0

IMapControl2.AddLayerFromFile Method,一个方法
作用:当一个层文件被添加到MapControl的层集合中并且没有指定索引时,它将被添加到集合的开始或顶部,索引为0。层集合中任何其他层的数字索引递增1。
当添加层文件并指定索引时,层集合中任何其他层的数字索引将增加1,但索引小于指定索引的那些层除外。这些层的索引将保持不变

示例代码

[C#]
public
void
AddLayerFromFile (
string lyrPath, // 输入图层路径
int toIndex // 索引值
);

可选参数
Optional Values
toIndex Supply 0 as a default value.

区别:

  • AddLayer:在指定索引位置向Map的层集合添加层。(从页面中的其他控件导入文件)
  • AddLayerFromFile:加载一个层文件,并将其添加到地图的指定索引位置的层集合中。(直接从文件中导入文件)

IMapControl2.AddShapeFile Method,一个方法
作用:当一个shapefile被添加到MapControl的层集合时,它被添加到集合的开始或顶部,索引为0。层集合中任何其他层的数字索引递增1。

示例代码

[C#]
public
void
AddShapeFile (
string Path, // 文件路径
string fileName // 文件名
);

IMapControl2.Appearance Property,一个属性
作用:返回或设置MapControl的绘制样式为平面或3D。默认情况下,外观是扁平的。

示例代码

[C#]
public
esriControlsAppearance
Appearance {get; set;}

IMapControl2.BackColor Property,一个属性
作用:返回或设置MapControl的背景颜色。OLE_Color内部存储为一个长整数,其中的值可以为任何RGB组合计算如下:
OLE_Color =(红色)+(绿色* 256)+(蓝色* 256 * 256)
其中红、绿、蓝为取值范围为0 ~ 255的长整数。

示例代码

[C#]
public
int
BackColor {get; set;}

IMapControl2.BorderStyle Property,一个属性
作用:返回或设置MapControl的边框样式。默认情况下会绘制一个边界

IMapControl2.CenterAt Method,一个方法
作用:CenterAt方法将提供的点定位在MapControl的中心。MapControl的范围将会改变,但规模将保持不变。

IMapControl2.CheckMxFile Method,以恶搞方法
作用:确定指定的映射文档(*.)mxd, *。mxt, *.pmf)是一个有效的地图文档,可以加载到MapControl。该方法验证文件是证文件内部是否符合预期的存储格式。该方法不读取和验证文件的全部内容;使用LoadMxFile来做这个

IMapControl2.ClearLayers Method,一个方法
作用:该方法是IMap::ClearLayers的快捷方式,并从Map中移除所有的层。ClearLayers不会改变或重置地图的SpatialReference

IMapControl2.CurrentTool Property,一个属性
作用:CurrentTool是用来交互MapControl显示的工具。在将工具设置为CurrentTool属性之前,一定要检查它是否已启用,否则用户将能够使用实际禁用的工具

IMapControl2.Map Property,一个属性
作用:这是包含在MapControl中的Map CoClass。如果Map被替换,会触发IMapControlEvents2:: onmapreplace事件。