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