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 } |