0017 鹰眼地图功能的实现

0017 鹰眼地图功能的实现
0017 鹰眼地图功能的实现

1、编写同步类SynchronizeControls,保持MapControl 控件与PageLayoutControl控件之间的联动关系

///

///保持MapControl控件与PageLayoutControl控件之间的联动关系

///

public class SynchronizeControls

{

private IMapControl3 m_mapControl = null;

private IPageLayoutControl2 m_pageLayoutControl = null;

private ITool m_mapActiveTool = null;

private ITool m_pagelayoutActiveTool = null;

private bool m_isMapActive = false;

public SynchronizeControls()

{

}

public SynchronizeControls(IMapControl3 MapControl, IPageLayoutControl2 PageLayoutControl)

{

this.m_mapControl = MapControl;

this.PageLayoutControl = PageLayoutControl;

}

public IMapControl3 MapControl

{

get

{

return m_mapControl;

}

set

{

m_mapControl = value;

}

}

public IPageLayoutControl2 PageLayoutControl

{

get

{

return m_pageLayoutControl;

}

set

{

m_pageLayoutControl = value;

}

}

///

///激活地图控件

///

public void ActiveMapControl()

{

if (m_mapControl == null || m_pageLayoutControl == null)

throw new Exception("MapControl or PageLayoutControl is not initiallized");

if (m_pageLayoutControl.CurrentTool != null)

m_pagelayoutActiveTool = m_pageLayoutControl.CurrentTool;

m_pageLayoutControl.ActiveView.Deactivate();

m_mapControl.ActiveView.Activate(m_mapControl.hWnd);

if (m_mapActiveTool != null)

m_mapControl.CurrentTool = m_mapActiveTool;

m_isMapActive = true;

}

///

///激活版面视图

///

public void ActivePageLayoutControl()

{

if (m_mapControl == null || m_pageLayoutControl == null)

throw new Exception("MapControl or PageLayoutControl is not initiallized");

if (m_mapControl.CurrentTool != null)

m_mapActiveTool = m_mapControl.CurrentTool;

m_mapControl.ActiveView.Deactivate();

m_pageLayoutControl.ActiveView.Activate(m_pageLayoutControl.hWnd);

if (m_pagelayoutActiveTool != null)

m_pageLayoutControl.CurrentTool = m_pagelayoutActiveTool;

m_isMapActive = false;

}

///

///绑定MapControl与PageLayoutControl,通过它们之间的焦点地图进行绑定

///

///

public void BindControls(IMapControl3MapControl,IPageLayoutControl2PageLayoutControl, bool activeMapFirst)

{

m_mapControl = MapControl;

m_pageLayoutControl = PageLayoutControl;

if (m_mapControl == null || m_pageLayoutControl == null)

throw new Exception("MapControl or PageLayoutControl is not initiallized");

IMap _newMap = new MapClass();

_https://www.360docs.net/doc/8e13752000.html, = "Map";

IMaps _maps = new Maps();

_maps.Add(_newMap);

this.ActivePageLayoutControl();

m_pageLayoutControl.PageLayout.ReplaceMaps(_maps);

m_mapControl.Map = _newMap;

m_mapActiveTool = null;

m_pagelayoutActiveTool = null;

if (activeMapFirst == true)

ActiveMapControl();

else

ActivePageLayoutControl();

}

///

///当文档发生变化时,通过焦点地图,绑定MapControl与PageLayoutControl之间的地图

///

///

public void ReplaceMap(IMap Map)

{

if (Map == null)

throw new Exception("Map is not initialized");

IMaps _maps = new Maps();

_maps.Add(Map);

this.ActivePageLayoutControl();

m_pageLayoutControl.PageLayout.ReplaceMaps(_maps);

m_mapControl.Map = Map;

m_pagelayoutActiveTool = null;

m_mapActiveTool = null;

if (m_isMapActive == true)

{

this.ActiveMapControl();

m_mapControl.ActiveView.Refresh();

}

else

{

this.ActivePageLayoutControl();

m_pageLayoutControl.ActiveView.Refresh();

}

}

}

2、绑定主界面的MapControl控件和PageLayout控件

m_synchronizeControls = new SynchronizeControls();

IMapControl3 _mapControl = this.axMapControl1.Object as IMapControl3;

IPageLayoutControl2 _pageLayoutControl = this.axPageLayoutControl1.Object as IPageLayoutControl2;

m_synchronizeControls.BindControls(_mapControl, _pageLayoutControl, true);

3、根据用户选择视图,激活对应的视图

this.m_synchronizeControls.ActiveMapControl();

4、当用户打开新的地图文档,或者是新建地图文档时,需要对MapControl与PageLayoutControl控件的一致性进行刷新

IMap _map = m_MapDocument.get_Map(0);

m_MapDocument.SetActiveView(_map as IActiveView);

SynchronizeControls _synchronizeControls = new SynchronizeControls(m_MapControl3, m_pageLayoutControl);

_synchronizeControls.ReplaceMap(_map);

_synchronizeControls.ActiveMapControl();

相关主题
相关文档
最新文档