ArcGIS Engine开发之视图同步

Posted 东腾的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGIS Engine开发之视图同步相关的知识,希望对你有一定的参考价值。

数据视图与布局视图的同步

数据视图与布局视图的同步,首先要保证数据的一致性,其次就是数据显示范围的一致性。该同步主要涉及IMapControl接口的OnMapReplaced事件和OnAfterScreenDraw事件。

1)OnMapReplaced事件

OnMapReplaced事件发生在MapControl的地图被替换后,即在IMapControl接口的Map被另一个地图替换时触发该事件。

2)OnAfterScreenDraw事件

OnAfterScreenDraw事件发生在MapControl内的地图完成绘制之后,即在IDisplayEvents接口的DisplayFinished事件之后被触发,而IDisplayEvents接口的DisplayFinished事件则在地图显示于屏幕时被触发。

实现的思路:

①当数据视图的范围发生变化时,获得此时数据视图的范围。

②传到布局视图控件的视图中,同时使用数据复制的方法保证数据的一致性。

 1  #region 复制数据视图数据到布局视图中的方法封装
 2         private void CopyToLayoutMapControl()
 3         {
 4             IObjectCopy pObjectCopy = new ObjectCopyClass();
 5             object copyFormMap = mainMapControl.Map;
 6             object copiedMap = pObjectCopy.Copy(copyFormMap);//复制地图到conpiedMap 中
 7             object copyToMap = layoutMapControl.ActiveView.FocusMap;
 8             pObjectCopy.Overwrite(copiedMap, ref copyFormMap);//复制地图
 9             layoutMapControl.ActiveView.Refresh();
10         }
11         #endregion

③当数据视图控件加载地理数据重绘时,与其联动的布局视图控件的地图范围也需要发生相应的变化。在Mapcontrol控件中的OnAfterScreenDraw事件中获取当前数据视图范围,并传到pageLayoutMapcontrol控件的ActiveView对象的FocusMap中,同时调用数据复制的方法。

以上是关于ArcGIS Engine开发之视图同步的主要内容,如果未能解决你的问题,请参考以下文章

《ArcGIS Engine+C#实例开发教程》第三讲 MapControl与PageLayoutControl同步

ArcGIS Engine开发之地图导出

ArcGIS Engine开发之地图浏览

《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现

ArcGIS Engine开发鹰眼图的功能(代码优化篇)

ArcGIS Engine开发之地图基本操作