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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值