*加载地图文档的方式有三种:
(1)使用IMapControl接口的LoadMxFile方法加载
(2)通过IMapDocument接口加载
(3)使用Arcgis Engine中封装好的类库资源ControlsOpenDocCommandClass加载*
一、使用IMapControl接口的LoadMxFile方法加载
1、通过.NET框架类提供的打开文件对话框选择要打开的地图文档
2、用IMapControl接口提供的CheckMxFile方法检查是否为有效地图文档,若有效,则调用IMapControl接口提供的LoadMxFile方法加载
(1)CheckMxFile方法
该方法的作用是确定选中的地图文档是否一个可以加载到MapControl控件中的有效地图文档。
(2)LoadMxFile方法
向MapControl控件中加载地图文档,地图文档可以用索引或文件名来指示。
函数原型为public void LoadMxFile(string mxPath,object mapNameOrIndex,object password)
核心代码:
OpenFileDialog pOpenFileDialog=new OpenFileDialog();
pOpenFileDialog.CheckFileExists=true;
pOpenFileDialog.Title="打开地图文档";
pOpenFileDialog.Filter="ArcMap文档(*.mxd)|*.mxd";
pOpenFileDialog.Multiselect=false;//不允许多个文件同时选择
pOpenFileDialog.RestoreDirectory=true;//存储打开的文件路径
if(pOpenFileDialog.ShowDialog()==DialogResult.OK)
{
string pFileName=pOpenFileDialog.FileName;
if(pFileName=="")
{
return;
}
if(mainMapControl.CheckMxFile(pFileName))//检查地图文档是否有效
{
ClearAllData();
mainMapControl.LoadMxFile(pFileName);
}
else
{
MessageBox.Show(pFileName+"是无效的地图文档!","提示信息");
return;
}
}
二、通过IMapDocument接口加载地图文档
该接口定义了操作和管理地图文档对象的方法和属性。使用这个对象可以获取、更新一个文档的内容,设置文档文件的属性以及读写和保存一个文档文件等。IMapDocument接口同时扮演着数据显示和数据容器的双重身份,可以通过ActiveView获得Map数据视图,通过FocusMap属性获得当前正在使用的Map对象的数据容器身份。一个文档对象可能拥有多个Map对象,但在同一时刻内只能有一份Map处于使用状态。
核心代码:
OpenFileDialog pOpenFileDialog=new OpenFileDialog();
pOpenFileDialog.CheckFileExists=true;
pOpenFileDialog.Title="打开地图文档";
pOpenFileDialog.Filter="ArcMap文档(*.mxd)|*.mxd";
pOpenFileDialog.Multiselect=false;//不允许多个文件同时选择
pOpenFileDialog.RestoreDirectory=true;//存储打开的文件路径
if(pOpenFileDialog.ShowDialog()==DialogResult.OK)
{
string pFileName=pOpenFileDialog.FileName;
if(pFileName=="")
{
return;
}
if(mainMapControl.CheckMxFile(pFileName))//检查地图文档是否有效
{
//将数据载入pMapDocument并与Map控件关联
//using ESRI.ArcGIS.Carto;
IMapDocument pMapDocument=new MapDocument();
pMapDocument.Open(pFileName,"");
//获取Map中激活的地图文档
mainMapControl.Map=pMapDocument.ActiveView.FocusMap;
mainMapControl.ActiveView.Refresh();
}
else
{
MessageBox.Show(pFileName+"是无效的地图文档!","提示信息");
return;
}
}
三、使用ControlsOpenDocCommandClass加载地图
使用ArcGIS Engine中封装好的类库资源ControlsOpenDocCommandClass实现地图文档加载
核心代码:
ICommand command=new ControlsOpenDocCommandClass();
command.OnCreate(mainMapControl.Object);
command.OnClick();
三种方法中推荐使用第一种
3753

被折叠的 条评论
为什么被折叠?



