实现添加数据、地图放大、缩小、漫游、全景视图、鹰眼图的操作(ICommand、ITool)...
#实现添加数据、地图放大、缩小、漫游、全景视图、鹰眼图的操作(ICommand、ITool)
ICommand接口:属于ESRI.ARCGIS.SystemUI命名空间(引用)
1.添加数据:
//添加数据private void button1_Click(object sender, EventArgs e){ICommand addfile = new ControlsAddDataCommandClass();addfile.OnCreate(axMapControl1.Object);addfile.OnClick();}
//地图放大private void button2_Click(object sender, EventArgs e){if (axMapControl1.CurrentTool == null){ICommand identify;ITool identifytool = new ControlsMapZoomInToolClass();axMapControl1.CurrentTool = identifytool;//由于ITool中不存在绑定MapControl的方法,所以需要进行接口跳转到ICommand来进行绑定MapControlidentify = identifytool as ICommand;identify.OnCreate(axMapControl1.Object);identify.OnClick();}else{axMapControl1.CurrentTool = null;}}//地图缩小private void button3_Click(object sender, EventArgs e){if (axMapControl1.CurrentTool == null){ICommand identify;ITool identifytool = new ControlsMapZoomOutToolClass();axMapControl1.CurrentTool = identifytool;identify = identifytool as ICommand;identify.OnCreate(axMapControl1.Object);identify.OnClick();}else{axMapControl1.CurrentTool = null;}}//全图显示private void button4_Click(object sender, EventArgs e){ICommand mapfull=new ControlsMapFullExtentCommandClass();mapfull.OnCreate(axMapControl1.Object);mapfull.OnClick();}//漫游:private void button5_Click(object sender, EventArgs e){if (axMapControl1.CurrentTool == null){ICommand identify;ITool identifytool = new ControlsMapPanToolClass();axMapControl1.CurrentTool = identifytool;identify = identifytool as ICommand;identify.OnCreate(axMapControl1.Object);identify.OnClick();}else{axMapControl1.CurrentTool = null;}}//鹰眼图1(只能对Mxd文档进行鹰眼图显示)//该事件axMapControl1_OnMapReplaced的意思是当当地图文档发生了改变就会执行里面的代码。private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e){IMap pmap = axMapControl1.Map;int i;for (i = 0; i < pmap.LayerCount; i++){//复制对象IObjectCopy objectcopy = new ObjectCopyClass();object toCopyLayer = axMapControl1.get_Layer(pmap.LayerCount - 1 - i);object copiedLayer = objectcopy.Copy(toCopyLayer);//将复制的对象添加到map2axMapControl2.Map.AddLayer(copiedLayer as ILayer);}//保证map2里面的范围始终是map1中的范围axMapControl2.Extent = axMapControl1.FullExtent;}//打开地图文档private void button6_Click(object sender, EventArgs e){axMapControl1.LoadMxFile("D:\\ARCEngineDATA\\map.mxd");}//鹰眼图矩形框实现//axMapControl1_OnExtentUpdated事件,当MapControl视图的范围发生了改变,就会触发这个时间private void axMapControl1_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e){IEnvelope pEnv;//矩形面pEnv = e.newEnvelope as IEnvelope;IGraphicsContainer graphicscontainer;IActiveView activewer;graphicscontainer = axMapControl2.Map as IGraphicsContainer;activewer = graphicscontainer as IActiveView;graphicscontainer.DeleteAllElements();IElement plement;plement = new RectangleElementClass();plement.Geometry = pEnv;//设置矩形的属性IRgbColor rgbcol = new RgbColorClass();rgbcol.RGB = 255;rgbcol.Transparency = 255;//不透明边框ILineSymbol poutline = new SimpleLineSymbolClass();poutline.Width = 1;poutline.Color = rgbcol;IRgbColor pcolor = new RgbColorClass();pcolor.RGB = 255;pcolor.Transparency = 0;//透明内部IFillSymbol fillsym = new SimpleFillSymbolClass();fillsym.Color = pcolor;fillsym.Outline = poutline;//IFillShapeElement这个接口可以添加symbol。IFillShapeElement pfillshapeelement;pfillshapeelement = plement as IFillShapeElement;pfillshapeelement.Symbol = fillsym;//添加矩形框plement = pfillshapeelement as IElement;//转回为IElement才能在map2中添加矩形框graphicscontainer.AddElement(plement, 0);//添加activewer.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);//视图刷新}
实现添加数据、地图放大、缩小、漫游、全景视图、鹰眼图的操作(ICommand、ITool)...相关推荐
- NeurIPS 2021 | 简单且通用的多视图对比图聚类方法
随着信息时代的蓬勃发展,产生了大量多视图属性图图数据.随即,也出现许多的多视图聚类方法,但这些方法只利用数据中的多属性信息或者多拓扑图信息,没有完整地利用属性图数据的所有信息. 本期 AI Drive ...
- ArcGIS:如何新建图层组并添加数据、切换数据视图和布局视图、修改符号系统?
目录 01 如何新建图层组? 02 如何在图层组中添加数据 03 如何切换数据视图和布局视图 03 如何修改符号系统? 3.1 如何快捷的修改一下符号样式? 3.2 如何修改符号系统的色带 3.2.1 ...
- [Asp.net MVC]Asp.net MVC5系列——添加数据
目录 概述 显示添加数据时所用表单 处理HTTP-POST 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列--第一个项目 [Asp.net MVC]Asp.net MVC5系列 ...
- ASP.NET MVC 5 - 将数据从控制器传递给视图
ASP.NET MVC 5 - 将数据从控制器传递给视图 原文:ASP.NET MVC 5 - 将数据从控制器传递给视图 在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图. ...
- 简单实现Popup弹出框添加数据
逻辑 窗口P1中显示一组数据,并提供一个添加按钮 点击按钮,弹出新的浏览器窗口P2,在其中添加一条数据并提交后,窗口P2自动关闭 新添加数据动态添加到窗口P1中并被选中 所需知识:JS BOM 窗口对 ...
- Python Flask实现查询和添加数据
Python Flask实现查询和添加数据 在其他的文章里,我写了 Flask 对数据库进行增删改查的方法,也写了 Flask 将数据返回给前端的方法. 这篇文章,将两者串联起来,实现从前端到数据库的 ...
- android listview添加数据_Android系统列表控件
在android系统控件中,有多个控件可以展示列表数据. 一.ListView 该组件是android中最常用的一个UI组件,用于实现在屏幕上显示多个内容,以便于我们用手指进行滑动. ListView ...
- popup弹出html页面,Popup弹出框绑定添加数据事件(步奏详解)
这次给大家带来Popup弹出框绑定添加数据事件(步奏详解),Popup弹出框绑定添加数据事件的注意事项有哪些,下面就是实战案例,一起来看一下. 逻辑 窗口P1中显示一组数据,并提供一个添加按钮 点击按 ...
- vue知识点详解,Vue之v-prev、vue-virtual-scroll-list、alise、data动态添加数据、v-for中的key值等
1.没有vue语法的v-prev 给模版中静态html添加该指令,表示不需要重复编译.(可以极大的加快编译速度) 2.vue-virtual-scroll-list虚拟插件,用于长列表,几十万的数据也 ...
- E01-前端整合:【案例】添加数据页面
HTML CSS JavaScript,jQuery BootScript(动态效果依赖于jQuery) 案例:添加数据页面 人员信息录入功能,需要提供用信息: 用户名,年龄,薪资,部门,入职时间(* ...
最新文章
- 目标检测--Feature Pyramid Networks for Object Detection
- webpack自动打包功能配置
- [WF4.0]工作流设计器Rehosting(一)
- Django之路--第一篇
- Spartacus integration library 文件夹的设计
- SDUT 3347 数据结构实验之数组三:快速转置
- 【AI视野·今日CV 计算机视觉论文速览 第180期】Wed, 26 Feb 2020
- Go语言学习之GOPATH
- (26) CSS3 2D转换transform
- k8s 拉取镜像失败_k8s 拉取私有仓库失败
- Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题...	1
- python回到本次循环开头_如何循环回到程序的开头?Python
- 极品婆媳龙争虎斗---终极PK王者之战(10)
- Java——继承的概念
- ariang修改默认服务器,Aria2一键安装脚本,宝塔面板搭建AriaNg前端面板
- 多少天计算机通知用户更改密码,win10系统怎么设置电脑定期强制提醒用户更改登录密码...
- 优动漫PAINT之绘画助手软件简介
- windows xp查看缩略图时有缩略图没有文件名
- 好不容易进了洞房,解不开新娘的衣服,新郎一怒走天涯,人间惨剧啊!
- 离散数学 第十二章 平面图及其应用