コード例 #1
0
        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();
            }
        }
コード例 #2
0
        /// <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();
        }