public void ReplaceMap(IMap newMap) { if (newMap == null) throw new Exception("ControlsSynchronizer::ReplaceMap\r\n新Map没有初始化!"); if (m_pageLayoutControl == null || m_mapControl == null) throw new Exception("ControlsSynchronizer::ReplaceMap:\r\nMapControl或PageLayoutControl没有初始化!"); //产生一个地图容器IMaps对象 IMaps maps = new Maps(); //将新Map添加到Maps集合 maps.Add(newMap); bool bIsMapActive = m_IsMapCtrlactive; //使PageLayoutControl处于激活状态才能调用ReplaceMaps名列 this.ActivatePageLayout(); m_pageLayoutControl.PageLayout.ReplaceMaps(maps); //将Map传递给MapControl m_mapControl.Map = newMap; ////重设active tools //m_pageLayoutActiveTool = null; //m_mapActiveTool = null; //保证一个活动控件处于激活状态 if (bIsMapActive) { this.ActivateMap(); m_mapControl.ActiveView.Refresh(); } else { this.ActivatePageLayout(); m_pageLayoutControl.ActiveView.Refresh(); } }
/// <summary> /// 将MapControl和PageLayoutControl通过同一个焦点Map进行绑定 /// </summary> /// <param name="activateMapFirst">如果MapControl作为默认活动控件设置为True</param> public void BindControls(bool activateMapFirst) { if (m_pageLayoutControl == null || m_mapControl == null) throw new Exception("ControlsSynchronizer::BindControls:\r\nMapControl或PageLayoutControl没有初始化!"); //产生一个Map对象 //这里需要对引用的carto 设置嵌入互操作类型改为false //解释 http://www.cnblogs.com/pnljs/archive/2012/02/20/2359313.html IMap newMap = new MapClass(); newMap.Name = "图层"; //产生一个地图容器IMaps对象 //这里的maps是自己构建的类用来解决两个控件传入地图参数一个是IMaps一个是IMap实际上前者是后者的集合 IMaps maps = new Maps(); maps.Add(newMap); m_pageLayoutControl.PageLayout.ReplaceMaps(maps); m_mapControl.Map = newMap; ////重设active tools //m_pageLayoutActiveTool = null; //m_mapActiveTool = null; if (activateMapFirst) this.ActivateMap(); else this.ActivatePageLayout(); }