PIE SDK地图范围设置
1.功能简介
地图范围设置主要就是对图层的地图浏览控制,例如地图的放大、缩小、漫游、全图显示、1:1视图、比例尺等功能,能更好的与地图有一个互动的地图浏览体验。PIE SDK对地图范围设置主要利用ICommand命令或者ITool对对应功能命令的调用,调用简单易于实现。
2.功能实现说明
2.1. 实现思路及原理说明
第一步 |
创建对应的命令实例化对象 |
第二步 |
创建插件对象 |
第三步 |
调用OnClick方法触发事件 |
2.2. 核心接口与方法
接口/类 |
方法/属性 |
说明 |
PIE.SystemUI.ICommand |
OnClick |
点击事件 |
OnCreate |
创建插件对象 |
|
PIE.Controls |
MapZoomInTool |
拉框放大构造函数 |
MapZoomOutTool |
拉框缩小构造函数 |
|
PanTool |
平移漫游构造函数 |
|
FullExtentCommand |
全图显示构造函数 |
|
ZoomToNativeCommand |
1:1显示构造函数 |
|
CenterZoomInCommand |
中心放大构造函数 |
|
CenterZoomOutCommand |
中心缩小构造函数 |
2.3. 示例代码
项目路径 |
百度云盘地址下/PIE示例程序/02.地图操作/01.地图范围设置 |
数据路径 |
百度云盘地址下/PIE示例数据/栅格数据/04.World/World.tif |
视频路径 |
百度云盘地址下/PIE视频教程/02.地图操作/01.地图范围设置.avi |
示例代码 |
|
1 /// <summary> 2 /// 地图放大事件 3 /// </summary> 4 /// <param name="sender">事件触发器</param> 5 /// <param name="e">事件参数</param> 6 private void toolStripButton_ZoomIn_Click(object sender, EventArgs e) 7 { 8 ITool tool = new PIE.Controls.MapZoomInTool(); 9 (tool as ICommand).OnCreate(mapControlMain); 10 mapControlMain.CurrentTool = tool; 11 } 12 /// <summary> 13 /// 地图缩小事件 14 /// </summary> 15 /// <param name="sender">事件触发器</param> 16 /// <param name="e">事件参数</param> 17 private void toolStripButton_ZoomOut_Click(object sender, EventArgs e) 18 { 19 ITool tool = new PIE.Controls.MapZoomOutTool(); 20 (tool as ICommand).OnCreate(mapControlMain); 21 mapControlMain.CurrentTool = tool; 22 } 23 24 /// <summary> 25 /// 地图平移事件 26 /// </summary> 27 /// <param name="sender">事件触发器</param> 28 /// <param name="e">事件参数</param> 29 private void toolStripButton_ZoomPan_Click(object sender, EventArgs e) 30 { 31 ITool tool = new PIE.Controls.PanTool(); 32 (tool as ICommand).OnCreate(mapControlMain); 33 mapControlMain.CurrentTool = tool; 34 } 35 36 /// <summary> 37 /// 全图显示事件 38 /// </summary> 39 /// <param name="sender">事件触发器</param> 40 /// <param name="e">事件参数</param> 41 private void toolStripButton_FullExtent_Click(object sender, EventArgs e) 42 { 43 ICommand command = new PIE.Controls.FullExtentCommand(); 44 command.OnCreate(mapControlMain); 45 command.OnClick(); 46 } 47 48 /// <summary> 49 /// 中心缩小 50 /// </summary> 51 /// <param name="sender"></param> 52 /// <param name="e"></param> 53 private void toolStripButton1_Click(object sender, EventArgs e) 54 { 55 ICommand cmd = new PIE.Controls.ZoomToNativeCommand(); 56 cmd.OnCreate(mapControlMain); 57 cmd.OnClick(); 58 } 59 60 /// <summary> 61 /// 中心放大 62 /// </summary> 63 /// <param name="sender"></param> 64 /// <param name="e"></param> 65 private void toolStripButton_CenterZoomIn_Click(object sender, EventArgs e) 66 { 67 ICommand cmd = new PIE.Controls.CenterZoomInCommand(); 68 cmd.OnCreate(mapControlMain); 69 cmd.OnClick(); 70 } 71 72 /// <summary> 73 /// 中心缩小 74 /// </summary> 75 /// <param name="sender"></param> 76 /// <param name="e"></param> 77 private void toolStripButton_CenterZoomOut_Click(object sender, EventArgs e) 78 { 79 ICommand cmd = new PIE.Controls.CenterZoomOutCommand(); 80 cmd.OnCreate(mapControlMain); 81 cmd.OnClick(); 82 } 83 /// <summary> 84 /// 地图1:1显示 85 /// </summary> 86 /// <param name="sender"></param> 87 /// <param name="e"></param> 88 private void toolStripButton1_ZoonToNativeCmd_Click(object sender, EventArgs e) 89 { 90 ICommand cmd = new PIE.Controls.ZoomToNativeCommand(); 91 cmd.OnCreate(mapControlMain); 92 cmd.OnClick(); 93 } 94 /// <summary> 95 /// 地图比例尺 96 /// </summary> 97 /// <param name="sender"></param> 98 /// <param name="e"></param> 99 private void tbn_MapScale_Click(object sender, EventArgs e) 100 { 101 double beforeMapScale = mapControlMain.ActiveView.DisplayTransformation.MapScale; 102 mapControlMain.ActiveView.DisplayTransformation.MapScale =50000; 103 double lastMapScale= mapControlMain.ActiveView.DisplayTransformation.MapScale; 104 MessageBox.Show(string.Format("修改前地图比例尺为:1:{0};\r\n修改后比例尺为:1:{1}", beforeMapScale, lastMapScale), "提示"); 105 mapControlMain.ActiveView.PartialRefresh(ViewDrawPhaseType.ViewAll); 106 } |
2.4. 示例截图
以地图放大和地图比例尺为例截图显示: