數據視圖與布局視圖的同步
數據視圖與布局視圖的同步,首先要保證數據的一致性,其次就是數據顯示范圍的一致性。該同步主要涉及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中,同時調用數據復制的方法。