关于MapControl和PageLayoutControl同步的一点分析

   地图视图和版面视图同步是从开始AE编程就接触的问题!现在再来分析主要还是因为制图的需要,我希望将多个Data Frame放到一个版面视图中显示和打印。ArcGIS提共了“插入”——>“New Data Frame”功能。可以很好的解决这个问题,但是前期自己做的都是读取MapDocument中的一个地图对象,通过mapDoc.GetMap(0);来获取IMap,这真是对MapDocument的大材小用,MapDocument可以包括多个地图,可以包括版面中的多个制图信息如地图整饰的信息、TableFrame的信息等等。

  在AE中找了半天,没有找到DataFrame命名的类,郁闷了半天。MapFrame是不是我想要的呢?应该是。

  看到PageLayout中有个Replace(Maps pMaps)方法,但是没有找到Maps定义,这也很奇怪。不过终于还是在MapAndPageLayoutSynch这个帮助项目或者说示例程序中找到了Maps的类,运用Replace(Maps pMaps)这个方法可以实现在PageLayout中显示多个DataFrame。

  这都让我开始思考地图和版面同步的问题,

  思考1,Toc只和PagelayoutControl绑定了,没有和MapControl绑定,绑定就是指Setbuddy。

  证据(1):这个在ArcGIS中可以看出一点端倪,当ArcGIS初始化时Toc中显示的初始DataFrame都是以Layers命名,而当在AE中绑定到MapControl是显示的Map5,在与AxPagelayoutControl绑定石显示的是layers.

  证据(2):在MapControl中根本没有类似的可以添加多个Map的方法或者属性

  证据(3):在Toc中右击选择Data Frame的属性和在Pagelayout中右键单击地图框Frame选择属性弹出的属性对话框完全相同。

  基于以上考虑,需要改造地图同步类,激活地图视图或者版面视图时Buddy都设为AxPagelayoutControl,打开地图文档时,首先更新版面视图,在将激活中的Map传到MapControl。添加、删除图层都是针对当前激活的Map进行的,这方面内容后续更新。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值