PIE SDK专题制图切换模板

 

1.    功能简介

    专题图是突出且较完备的表示一种或几种自然或社会经济现象,从而使地图起到专门化的作用。与普通地图不同,专题图的表示内容丰富多彩,多种多样。在实际业务应用中经常会用同一张地图出很多个专题图,为此PIESDK提供了不同模板之间切换的功能。

2. 功能实现说明

2.1.切换模板

       切换模板最主要的就是地图的克隆,以及地图文档的释放与加载。

2.2. 实现思路及原理说明

第一步

选择模板文件

第二步

创建一个mapDocument,并打开模板文件

第三步

克隆当前视图中的Map,并获取模板的PageLayout

第四步

调用IPageLayout的ReplaceMaps方法替换为当前地图

第五步

将IPageLayoutControl.PageLayout属性替换为新的PageLayout

第六步

释放原来的地图文档

第七步

刷新视图

2.3 . 核心接口与方法

接口/类

方法

说明

IMapDocument

Save ()

保存地图文档

IPageLayout

ReplaceMaps()

替换地图

2.4. 示例代码

       项目路径

百度云盘地址下/PIE示例程序/09.专题制图//04切换模板

代码位置

FormPagelayoutDemo. barButtonItem_change_ItemClick方法

视频位置

百度云盘地址下/PIE示例程序/09.专题制图/04切换模板.avi

示例代码

 1          /// <summary>
 2         /// 切换模板
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>       
 6         private void barButtonItem_change_ItemClick(object sender, ItemClickEventArgs e)
 7         {
 8              //1.选择模板文件
 9             OpenFileDialog openFileDialog = new OpenFileDialog();
10             openFileDialog.Title = "请选择要打开的模板:";
11             openFileDialog.Multiselect = false;
12             openFileDialog.Filter = "pmd|*.pmd|All Files|*.*";
13             if (openFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
14 
15             string filePath = openFileDialog.FileName;
16             string fileName = System.IO.Path.GetFileNameWithoutExtension(filePath);
17             //2.打开模板
18             IMapDocument mapDocument = new MapDocument();
19             if (!mapDocument.Open(filePath)) return;
20  
21             //克隆map;
22             IMap map = m_pageLayoutControl.FocusMap.Clone();
23             IList<IMap> listMap = new List<IMap>();
24             listMap.Add(map);
25             //替换地图
26             mapDocument.GetPageLayout().ReplaceMaps(listMap);
27             m_pageLayoutControl.PageLayout = mapDocument.GetPageLayout();
28             //释放地图文档
29             ((m_pageLayoutControl as Control).Tag as IDisposable).Dispose();
30             (m_pageLayoutControl as Control).Tag = mapDocument;           m_pageLayoutControl.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll);
31         }
View Code

2.5. 示例截图

原文地址:https://www.cnblogs.com/PIESat/p/10177521.html