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