AE开发图层操作1加载图层及相关操作1.1使用属性向MapControl中添加图层1.2使用程序动态地向MapControl中添加图层1.3图层的选择、移动、显示隐藏和卸载1.4控制图层显示的范围1.1使用属性向MapControl中添加图层(1)新建一个项目启动VisualStudio.NET,在【文件】菜单中选择【新建项目】,在“新建项目”对话框中选择项目类型为“VisualC#”,模板为“Windows应用程序”,选择“位置”,点击“确定”保存该项目1.1使用属性向MapControl中添加图层(2)添加选项卡在“工具箱”的空白处单击鼠标右键,在弹出的快捷菜单中选择“添加选项卡”,然后在新增选项卡上输入“ESRI控件”作为选项卡标签1.1使用属性向MapControl中添加图层(3)添加ArcGISEngine控件右键点击“ESRI控件”标签,从快捷菜单中选择“选择项”1.1使用属性向MapControl中添加图层在弹出的“选择工具项”对话框中选择“.NETFramework组件”选项卡,选中”AxMapControl”、“AxTOCControl”、“AxToolbarControl”和“AxPageLayoutControl”等复选框,单击“确定”按钮,将所选择的控件添加到工具栏中1.1使用属性向MapControl中添加图层在项目菜单中选择“添加引用”,在弹出的“添加引用”对话框中添加以下常用的类库引用:ESRI.ArcGIS.CartoESRI.ArcGIS.DisplayESRI.ArcGIS.GeometryESRI.ArcGIS.SystemESRI.ArcGIS.SystemUI1.1使用属性向MapControl中添加图层(4)在窗体中嵌入ArcGISEngine控件双击工具箱中的“ESRI”标签栏中的AxMapControl和AxLicenseControl控件,将它们都添加到窗体上,并调整好大小和位置。1.1使用属性向MapControl中添加图层(5)右键单击MapControl控件,在弹出的对话框中选择【属性】1.1使用属性向MapControl中添加图层(6)在弹出的属性页窗体中添加图层添加图层1.1使用属性向MapControl中添加图层(7)运行程序,显示结果1.2使用程序动态地向MapControl中添加图层MapControl类提供了三个方法用于加载图层:(1)AddLayer说明:AddsalayertotheMap'scollectionoflayersatthespecifiedindexposition用法:object.AddLayer(Layer[,toIndex=0])其中:Layer参数表示ILayer对象,必选参数toIndex参数表示图层的索引,长整型,可选参数1.2使用程序动态地向MapControl中添加图层MapControl类提供了三个方法用于加载图层:(2)AddLayerFromFile说明:Loadsalayerfile(*.lyr文件)andaddsittotheMap'scollectionoflayersatthespecifiedindexposition.用法:object.AddLayerFromFile(lyrPath[,toIndex=0])其中:lyrPath表示*.lyr文件的具体物理路径,必选参数toIndex参数表示图层的索引,长整型,可选参数1.2使用程序动态地向MapControl中添加图层MapControl类提供了三个方法用于加载图层:(3)AddShapeFile说明:Addsashapefile(*.shp文件)asalayertotheMap.用法:object.AddShapeFile(Path,fileName)其中:Path表示包含shape文件的文件夹路径,必选参数fileName参数表示shape文件的文件名,必选参数通过AddShapeFile方法加载图层的代码演示privatevoidForm1_Load(objectsender,EventArgse){axMapControl1.AddShapeFile(d:\\data\\world\\“,country.shp);axMapControl1.AddShapeFile(“d:\\data\\world\\“,rivers.shp);axMapControl1.AddShapeFile(d:\\data\\world\\“,cities.shp);}这里用绝对路径是否会有问题?改进后的代码stringCurrentPath=Directory.GetCurrentDirectory();Directory.SetCurrentDirectory(CurrentPath+\\..\\..\\..\\..\\data\\world);stringFilePath=Directory.GetCurrentDirectory();axMapControl1.AddShapeFile(FilePath,country.shp);axMapControl1.AddShapeFile(FilePath,rivers.shp);axMapControl1.AddShapeFile(FilePath,cities.shp);1.3图层的选择、移动、隐藏显示和卸载图层的选择MapControl通过对图层进行索引来定位图层,通过MapControl类的Layer属性可以实现图层的选择Layer属性的具体用法:variable=object.get_Layer(index)其中:variable:表示返回的图层对象index:表示图层的索引值在MapControl中索引号小的图层在索引号较大的图层的上面,最上面图层的索引号为0代码示例:返回当前地图中的各个图层的名字……listBox1.Items.Clear();listBox1.Items.Add(当前地图中的图层名如下:);inti;intlyrCount;lyrCount=axMapControl1.LayerCount;for(i=0;i=lyrCount-1;i++){listBox1.Items.Add(axMapControl1.get_Layer(i).Name);}……1.3图层的选择、移动、隐藏显示和卸载移动图层通过MapControl类的MoveLayerTo方法可以实现图层的移动MoveLayerTo方法的具体用法:object.MoveLayerTo(fromIndex,toIndex)其中:fromIndex:表示要进行移动操作的图层的索引toIndex:表示移动操作后图层的新索引1.3图层的选择、移动、隐藏显示和卸载移动图层代码示例:axMapControl1.MoveLayerTo(2,0);上面的代码表示把索引号为2的图层移动到索引为0的位置上1.3图层的选择、移动、隐藏显示和卸载隐藏、显示图层通过图层对象的Visible属性可以实现图层的隐藏或显示Visible属性的具体用法:object.Visible=[value]其中:value:布尔值,true或者false代码示例:axMapControl1.get_Layer(2).Visible=false;axMapControl1.Refresh();1.3图层的选择、移动、隐藏显示和卸载卸载图层通过MapControl类的DeleteLayer方法和ClearLayers方法可以实现图层的卸载DeleteLayer方法用于卸载指定的图层,具体用法为:object.DeleteLayer(index)其中:index:表示要卸载的图层的索引号代码示例:(下列代码表示删除索引号为2的图层)axMapControl1.DeleteLayer(2);1.3图层的选择、移动、隐藏显示和卸载卸载图层ClearLayers方法用于卸载所有的图层,具体用法为:object.ClearLayers代码示例:(下列代码表示删除地图控件中所有的图层)axMapControl1.ClearLayers();1.4控制图层显示的范围通过图层对象的MaximumScale属性和MinimumScale属性可以设置某个图层在一定的比例尺范围内进行显示代码示例:axMapControl1.get_Layer(0).MaximumScale=10000000;axMapControl1.get_Layer(0).MinimumScale=40000000;2图层控制2.1使用TocControl控件控制图层2.2使用TocControl控件对图层进行高级操作2.1使用TocControl控件控制图层TocControl是ArcGISEngine中用来管理MapControl中图层的控件,它的使用非常简单,只需要把它和对应的MapControl进行绑定即可绑定的两种方法(1)在控件属性中直接绑定2.1使用TocControl控件控制图层绑定的两种方法(2)使用代码进行动态绑定axTOCControl1.SetBuddyControl(axMapControl1);2.2使用TocControl控件对图层进行高级操作1)从TocControl上获得被点击的图层信息2)修改图层的名称3)拖动图层改变图层的叠放顺序4)在TocControl上给图层定义其他操作5)在TocControl上给图层添加快捷菜单1)从TocControl上获得被点击的图层信息从鼠标在TocControl控件中点击的位置来获得要操作的图层的所有信息以及图层本身,可以通过TocControl对象的HitTest方法实现HitTest方法的用法:object.HitTest(X,Y,refItemType,refBasicMap,refLayer,refUnk,refData)其中:X:表示鼠标点击处的横坐标;Y:表示鼠标点击处的纵坐标;ItemType:表示esriTOCControlItem枚举常量;BasicMap:表示当前的地图,为IBasicMap类型的对象Layer:表示被点击的图层,为ILayer类型的对象;Unk:表示TocControl上的legendGroup对象,为object类型;Data:表示LegendClass在LegendGroup中的Index,为object类型1)从TocControl上获得被点击的图层信息esriTOCControlItem枚举常量用于描述TocControl上的Item的类型,其定义如下:esriTOCControlItemNone0表示没有对象esriTOCControlItemMap1表示Map对象esriTOCControlItemLayer2表示Layer对象esriTOCControlItemHeading3表示对象的标题esriTOCControlItemLegendClass4表示LegendClass对象1)从TocControl上获得被点击的图层信息代码示例:ILayerpLayer=null;objectpLegendIndex=null;IBasicMappMap=null;objectpLengendGroup=null;esriTOCControlItempSelectItem=esriTOCControlItem.esriTOCControlItemNone;axTOCControl1.HitTest(e.x,e.y,refpSelectItem,refpMap,refpLayer,refpLengendGroup,refpLegendIndex);//MessageBox.Show(pSelectItem.ToString());MessageBox.Show(图层数:+pMap.