天天看点

AE二次开发:加载地图文档两种方法(拖拽页面后的写法)

大家都知道,界面设计好后,通过在特定地方双击写上点击事件就可以实现功能了。在下小白。也是跟着老师讲的写的。一为自己以后方便查看,二、可以为后人铺路。如有错误请提出。

方法一:通过axMapControl的LoadMxFile()方法去加载地图文档

//axMapControl控件,当你使用拖拽设计界面时,其命名会为axMapControl1,2,3…我的是1.

打开地图文档的方法与ArcGIS相同,通过点击菜单栏上的打开按钮。所以我们只要写打开的点击事件即可

以下为代码:

private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
        {
             try
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();
                openFileDialog.CheckFileExists = true;
                openFileDialog.Title = "打开地图文档";
                openFileDialog.Filter = "地图文档(*.mxd)|*.Mxd|地图模板(*.mxt)|*.Mxt";
                openFileDialog.Multiselect = false;
                openFileDialog.RestoreDirectory = true;
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                string sFileName = openFileDialog.FileName;
                    if (sFileName == "")
                    {
                        return;
                    }
                    if (axMapControl1.CheckMxFile(sFileName))
                    {
                        axMapControl1.LoadMxFile(sFileName);//重点

                    }
                    else
                    {
                        MessageBox.Show(sFileName + "是无效文档!", "信息提示");
                    }
                }
            }
            catch (Exception a) 
            {
                MessageBox.Show(a.ToString());
            }
         }
      }
           

方法二、通过ImapDocument接口加载地图文档(该接口在MapDocumentClass里)

思路同上,代码如下:

private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
        {
             try
            {    
            OpenFileDialog openfiledialog = new OpenFileDialog();
            openfiledialog.CheckFileExists = true;
            openfiledialog.Title = "打开地图图层";
            openfiledialog.Filter = "地图文档(*.mxd)|*.Mxd|地图模板(*.mxt)|*.Mxt";
            openfiledialog.Multiselect = false;
            openfiledialog.RestoreDirectory = true;
            //定义imapdocument接口
            
            if (openfiledialog.ShowDialog() == DialogResult.OK)
            {
                string sfilename;
                sfilename = openfiledialog.FileName;
               
               

                if (sfilename == "")
                {
                    return;
                }
                if (axMapControl1.CheckMxFile(sfilename))
                {
                    IMapDocument pmapdocument = new MapDocumentClass();
                    pmapdocument.Open(sfilename, "");
                    //将pmapdocument里的图层加载到axmapcontrol里。至此算做全部打开了。
                    axMapControl1.Map = pmapdocument.ActiveView.FocusMap;
                    //对打开图层进行设置属性
                    axMapControl1.ActiveView.Refresh();//对试图进行刷新显示;
                    axMapControl1.Extent = axMapControl1.FullExtent;//全屏显示;
                }
                else
                {
                    MessageBox.Show(sfilename + "是无效文档!", "信息提示");
                }
            }
        }
           

两个代码块只有部分代码不同。大家可以相互对比。哪个都不算难。大家可以选择自己可以理解的那种去用就好。

另外:加载图层layer和加载shp的方法,我也是参考的https://blog.csdn.net/weiwanshu/article/details/49784019其文章,推荐一下,挺好的。