通过IMapDocument接口用代码直接打开地图文档

刚开始接触Arcengine开发,今天遇到一个问题:

通过IMapDocument接口用代码直接打开地图文档_第1张图片

地图文档DongHu_1在axmapControl1控件中以导入,但是在运行时不能直接显示出来,每次都要通过 文件—打开才能显示出来,当然这是我前期代码设置的问题,可是找了半天也没能发现问题的根源。

所以干脆直接在Form1_Load中用IMapDocument接口直接打开地图文档,也能实现一样的效果。

using ESRI.ArcGIS.Carto; //引入IMapDocument接口所在的命名空间
private void Form1_Load(object sender, EventArgs e)
{
    pMapDocument=new MapDocumentClass(); //创建类的实例
    //---默认路径是程序起动的位置Sample文件夹里的Untitled.mxd文件---
   string filePath=Application.StartupPath+"\\Sample\\Untitled.mxd";
    pMapDocument.New(filePath); //创建地图文档,并会把Untitled.mxd中原有的地理数据清掉
   pMapDocument.Open(filePath,""); //打开地图文档
    //一个地图文档可能有N个地图组成的,不过空白的地图文件只有一个地图的
    axMapControl1.Map= pMapDocument.get_Map(0); //添加到地图控件
}

要注意filePath文件路径的格式:

      windows下文件路径是用\分隔的,比如C:\Windows\System32\就是一个标准的windows路径。
在C语言中,文件路径会被写作字符串形式,但是由于C语言的字符串规则中,\字符是转义字符的引导,所以直接写"C:\Windows\System32\"会出错。而字符'\\'才是表示\。于是在写路径的时候,就必须是"C:\\Windows\\System32\\"

当然也可以用使用windows自带的打开对话框控件OpenFileDialog控件打开地图文档      

private void OpenMapDocument()
{
 pMapDocument=new MapDocumentClass();再创建一个新引用对象
 openFileDialog1.Filter="地图文档(*.mxd)|*.mxd"; //对话框的过滤器
 openFileDialog1.InitialDirectory=@"d:\"; //默认文件路径在D盘
 openFileDialog1.MultiSelect=false; //因为地图文档只有一个处于激活状态
 DialogResult pDialogResult=openFileDialog1.ShowDialog();
 string filePath=openFileDialog1.FileName; //获取文件全路径
 if(pDialogResult!=DialogResult.OK)
 {
      messageBox.Show("添加地图文档失败!","提示",MessageBoxButton.OK);
      return;
 }
 pMapDocument.Open(filePath,"");
//循环遍历所有的地图
 for(int i=0;i

你可能感兴趣的:(通过IMapDocument接口用代码直接打开地图文档)