#实现添加数据、地图放大、缩小、漫游、全景视图、鹰眼图的操作(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)...相关推荐

  1. NeurIPS 2021 | 简单且通用的多视图对比图聚类方法

    随着信息时代的蓬勃发展,产生了大量多视图属性图图数据.随即,也出现许多的多视图聚类方法,但这些方法只利用数据中的多属性信息或者多拓扑图信息,没有完整地利用属性图数据的所有信息. 本期 AI Drive ...

  2. ArcGIS:如何新建图层组并添加数据、切换数据视图和布局视图、修改符号系统?

    目录 01 如何新建图层组? 02 如何在图层组中添加数据 03 如何切换数据视图和布局视图 03 如何修改符号系统? 3.1 如何快捷的修改一下符号样式? 3.2 如何修改符号系统的色带 3.2.1 ...

  3. [Asp.net MVC]Asp.net MVC5系列——添加数据

    目录 概述 显示添加数据时所用表单 处理HTTP-POST 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列--第一个项目 [Asp.net MVC]Asp.net MVC5系列 ...

  4. ASP.NET MVC 5 - 将数据从控制器传递给视图

    ASP.NET MVC 5 - 将数据从控制器传递给视图 原文:ASP.NET MVC 5 - 将数据从控制器传递给视图 在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图. ...

  5. 简单实现Popup弹出框添加数据

    逻辑 窗口P1中显示一组数据,并提供一个添加按钮 点击按钮,弹出新的浏览器窗口P2,在其中添加一条数据并提交后,窗口P2自动关闭 新添加数据动态添加到窗口P1中并被选中 所需知识:JS BOM 窗口对 ...

  6. Python Flask实现查询和添加数据

    Python Flask实现查询和添加数据 在其他的文章里,我写了 Flask 对数据库进行增删改查的方法,也写了 Flask 将数据返回给前端的方法. 这篇文章,将两者串联起来,实现从前端到数据库的 ...

  7. android listview添加数据_Android系统列表控件

    在android系统控件中,有多个控件可以展示列表数据. 一.ListView 该组件是android中最常用的一个UI组件,用于实现在屏幕上显示多个内容,以便于我们用手指进行滑动. ListView ...

  8. popup弹出html页面,Popup弹出框绑定添加数据事件(步奏详解)

    这次给大家带来Popup弹出框绑定添加数据事件(步奏详解),Popup弹出框绑定添加数据事件的注意事项有哪些,下面就是实战案例,一起来看一下. 逻辑 窗口P1中显示一组数据,并提供一个添加按钮 点击按 ...

  9. vue知识点详解,Vue之v-prev、vue-virtual-scroll-list、alise、data动态添加数据、v-for中的key值等

    1.没有vue语法的v-prev 给模版中静态html添加该指令,表示不需要重复编译.(可以极大的加快编译速度) 2.vue-virtual-scroll-list虚拟插件,用于长列表,几十万的数据也 ...

  10. E01-前端整合:【案例】添加数据页面

    HTML CSS JavaScript,jQuery BootScript(动态效果依赖于jQuery) 案例:添加数据页面 人员信息录入功能,需要提供用信息: 用户名,年龄,薪资,部门,入职时间(* ...

最新文章

  1. 目标检测--Feature Pyramid Networks for Object Detection
  2. webpack自动打包功能配置
  3. [WF4.0]工作流设计器Rehosting(一)
  4. Django之路--第一篇
  5. Spartacus integration library 文件夹的设计
  6. SDUT 3347 数据结构实验之数组三:快速转置
  7. 【AI视野·今日CV 计算机视觉论文速览 第180期】Wed, 26 Feb 2020
  8. Go语言学习之GOPATH
  9. (26) CSS3 2D转换transform
  10. k8s 拉取镜像失败_k8s 拉取私有仓库失败
  11. Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode 1.1. 不个网页title保存成个个文件的时候儿有无效字符的问题... 1
  12. python回到本次循环开头_如何循环回到程序的开头?Python
  13. 极品婆媳龙争虎斗---终极PK王者之战(10)
  14. Java——继承的概念
  15. ariang修改默认服务器,Aria2一键安装脚本,宝塔面板搭建AriaNg前端面板
  16. 多少天计算机通知用户更改密码,win10系统怎么设置电脑定期强制提醒用户更改登录密码...
  17. 优动漫PAINT之绘画助手软件简介
  18. windows xp查看缩略图时有缩略图没有文件名
  19. 好不容易进了洞房,解不开新娘的衣服,新郎一怒走天涯,人间惨剧啊!
  20. 离散数学 第十二章 平面图及其应用

热门文章

  1. Java微信表情包字符处理,数据库存储以及转义解决方式
  2. P3840蜗牛一期--虚拟局域网VLAN
  3. Numerical analysis second editon Timothy sauer 书附代码
  4. 常用的各平台 hosts 文件位置
  5. BIGEMAP如何发布百度离线地图及二次开发API
  6. 19.IIC通信:PCF8591:数模/模数转换芯片
  7. 运行edX Devstack
  8. Anaconda与ROS共存
  9. 100份开工礼送粉丝,体验嵌入式高级感!
  10. 01-msm8953 单独编译bootloader、kernel和system,以及采用adb fastboot下载镜像的方法