您的位置:首页 > 其它

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

2016-04-15 10:43 344 查看
问题:

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

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


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

ArcMap中Toc窗体实际仅和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);

代码仅供参考。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: