欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-12 16:48:17
...

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

方法一:通过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其文章,推荐一下,挺好的。

相关标签: AE二次开发