视频图像处理系列索引 || Arcgis/Engine/Server开发索引 || Web Map Gis开发索引 || jquery表格组件 JQGrid索引
WPF MVVM模式开发实现简明教程索引 || ArcGIS Runtime WPF(.net C#)开发简明教程索引

AE开发能否实现TOC Control里添加多个Data Frame

问题:

 

ArcMap中,菜单InsertData Frame,可以在TOC中增加Data Frame,在MapControl或者PageLayoutControl下都可以正常显示多个Data Frame,并且这些Data Frame可以方便切换,

但是在AE开发中,MapControl无法实现此效果,需要特殊控制(如何控制?)还是无法实现?

 

 

易智瑞(中国)信息技术有限公司客户与合作伙伴支持部 石羽  回复:

 

ArcMapToc窗体实际仅和Pagelayout窗体进行绑定,切换窗体时并没有切换绑定关系。

Map窗体与Pagelayout窗体同步有很多实现方法,ArcMap中采用的方法没有公开,您可自行研究。

 

这样确实可以解决此问题Toc窗体显示Pagelayout窗体的多个dataframe,MapControl不和Toc窗体绑定,这样切换视图时Toc窗体也不会变化的(MapControl只可以显示一个dataframe)

这时只需要增加其他几项控制就可以了

 

1.MapControl, Pagelayout 显示内容保持一致。

这个可以通过硬拷贝的方法,可以参考安装目录  Program Files\ArcGIS\DeveloperKit\SamplesNET\Engine\PageLayoutControlCopyFocusMap这个例子

 

2.实现不同dataframe切换问题,类似ArcMap右键菜单Activate

利用IMapDocument.Map(mapIndex )来实现

 

3.实现新增dataframe功能

 

pGraphicsContainer = axPageLayoutControl1.ActiveView.GraphicsContainer;
pActiveView = axPageLayoutControl1.ActiveView;
pMap = axPageLayoutControl1.ActiveView.FocusMap;

IMapFrame pMapFrame=new MapFrameClass();
IEnvelope pMapExt= new EnvelopeClass();

pMapFrame.Map = pMap;
pMapExt.PutCoords( pActiveView.XMin, pActiveView.YMin, pActiveView.XMax, pActiveView.YMax);

IElement pMapElement;
IGeometry pGeoExt;
pMapElement = pMapFrame as IElement;
pGeoExt = pMapExt;
pMapElement.Geometry = pGeoExt;
pGraphicsContainer.AddElement(pMapElement, 1);
axPageLayoutControl1.Refresh();

 

4.实现删除dataframe功能

pActiveView = axPageLayoutControl1.PageLayout as IActiveView ;

pMap = pActiveView.FocusMap;
pGC = pActiveView as IGraphicsContainer;
pMF = pGC.FindFrame(pMap) as IMapFrame ;
pGC.DeleteElement(pMF  as iElement);

 

 
代码仅供参考。
posted @ 2016-04-15 10:43  jhlong  阅读(570)  评论(0编辑  收藏  举报
海龙的博客 jhlong@cnblogs 版权所有© 转载请注明链接.有用请推荐一下
代码全部经过本人测试,但不保证复制粘贴就正常运行,更不保证能解决你的问题,请结合前后代码及描述理解后修改和使用