博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于MapControl和PageLayoutControl同步的一点分析
阅读量:6273 次
发布时间:2019-06-22

本文共 953 字,大约阅读时间需要 3 分钟。

   地图视图和版面视图同步是从开始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进行的,这方面内容后续更新。

转载地址:http://bjlpa.baihongyu.com/

你可能感兴趣的文章
PHP中常见的面试题2(附答案)
查看>>
角色权限分配
查看>>
明小子动力上传拿webshell.zip
查看>>
ES6 Module export与import复合使用
查看>>
第三篇、image 设置圆角的几种方式
查看>>
关于Vs2010 C#使用DirectX的问题
查看>>
EPP(Eclipse PHP)语法高亮仿EditPlus配置
查看>>
OA账号架构权限的问题
查看>>
030——VUE中鼠标语义修饰符
查看>>
python编辑csv
查看>>
sql游标的使用与exec的两种用法
查看>>
数据结构
查看>>
78/90 Subsets --back tracking
查看>>
非托管资源的释放
查看>>
开篇寄语
查看>>
Dijkstra算法的C++实现
查看>>
phpstorm psr2样式.xml
查看>>
js 无限级分类
查看>>
umask值与Linux中文件和目录权限的关系
查看>>
python自动化开发-8
查看>>