ArcGIS二次开发基础教程(02):地图导航和鹰眼

article/2025/10/15 15:52:35

ArcGIS二次开发基础教程(02):地图导航和鹰眼

地图导航(主要是调用命令和工具)

  1. 地图的放缩和漫游
if(axMapControl1.CurrentTool == null)
{ICommand icc;//地图放大ITool tool = new ControlsMapZoomInToolClass();//地图缩小//ITool tool = new ControlsMapZoomOutToolClass();//地图漫游//ITool tool = new ControlsMapPanToolClass();icc = tool as ICommand;icc.OnCreate(axMapControl1.Object);//钩子函数icc.OnClick();
}
  1. 全局地图

    ICommand icc = new ControlsFullExtentCommandClass();
    icc.OnCreate(axMapControl1.Object);
    icc.OnClick();
    

鹰眼

//注意:只有从mxd文件中加载图层鹰眼才会出现  axMapControl1是主地图 axMapControl2为鹰眼图
private void axMapControl1_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
{axMapControl2.Map.ClearLayer();if(axMapControl1.LayerCount>0){//从下往上获取图层添加到鹰眼图中防止覆盖for(int i= axMapControl1.LayerCount-1;i>=0;i--){ILayer layer = axMapControl1.get_Layer(i);IObjectCopy copy = new ObjectCopyClass();ILayer myLayer = copy.Copy(layer) as ILayer;axMapControl2.AddLayer(layer);}//设置相同的空间参考axMapControl2.SpatialReferencr = axMapControl1.SpatialReference;//鹰眼图的全局为主地图的当前视图axMapControl2.FullExtent = axMapControl1.Extent;//每次主地图图层增减都刷新axMapControl2.Refresh();}
}
//当主地图变化时,鹰眼图框变化
private void axMapControl2_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e)
{//创建一个矩形元素并转换为元素IElement ele = new RectangleElementClass() as IElement;//获取主地图的视图IEenvlop env = axMapControl1.Extent;ele.Geometry = env as IGeometry;//外轮廓线ISimpleLineSymbol lineSymbol = new SimpleLineSymbolClass();IRGBColor color1 = new RGBColorClass();color1.Red = 255;color1.Green = 0;color1.Blue = 0;//透明度为255即不透明color1.Tranparency = 255;lineSymbol.Color= color1;lineSymbol.Width = 2;ISimpleFillSymbol fillSymbol = new SimpleFillSymbolClass();IRGBColor color2 = new RGBColorClass();color2.Red = 255;color2.Green = 0;color2.Blue = 0;//透明度为0即完全透明 color2.Tranparency = 0;fillSymbol.Color = color2;fillSymbol.Outline = lineSymbol;//实现线框的生成IFillShapeElement fillShapeElement = ele as IFillShapeElement;fillShapeElement.Symbol = fillSymbol;//图形容器IGraphicsContainer graphicsContainer = axMapControl2.Map as IGraphicsContainer;//删掉以前的元素graphicsContainer.DeleteAllElements();//添加新元素graphicsContainer.AddElement(fillShapeElement as IElement);axMapControl2.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
}
//鹰眼图的鼠标点击事件private void axMapControl2_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e){if(e.Button == 1){//将主地图视图中心移到点击处IPoint point = new PointClass();point.PutCoords(e.mapX,e.mapY);axMapControl1.CenterAt(point);axMapControl1.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}else{//将主地图视图变为从鹰眼图获取的轨迹矩形IEnvelop env = axMapControl2.TrackRectangle;axMapCOntrol1.Extent = env;axMapControl1.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}}
//鹰眼图的鼠标移动事件private void axMapControl2_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e){if(e.Button == 1){IPoint point = new PointClass();point.PutCoords(e.mapX,e.mapY);axMapControl1.CenterAt(point);axMapControl1.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);}}

鹰眼效果:

在这里插入图片描述
历届GIS应用技能大赛开发题答案点这里,尚在不定期更新中


http://chatgpt.dhexx.cn/article/ej8D959C.shtml

相关文章

arcgis java 二次开发_arcgis二次开发_cad二次开发_java arcgis二次开发

属性查询是GIS应用不可缺少的重要功能,尤其是在各种业务系统中,根据用户输入相应的查询条件,从属性要素中快速定位到用户感兴趣的要素,为业务应用提供了便利。本文就来聊一聊QGis二次开发中如何实现属性查询功能。 其实这个功能我…

AE+ArcGIS二次开发课程设计(基于C#)

AEArcGIS二次开发课程设计(基于C#) 1.工作内容2.程序功能介绍3.功能模块介绍3.1 实现【创建TIN】说明3.1.1 功能说明3.1.2 代码实现(包含了所有主要的代码,库引用自行导入) 3.2 实现【TIN坡度坡向分析】说明3.2.1 功能…

ArcGIS二次开发前言

ArcGIS二次开发前言 前言环境常见bug解决方案 前言 自毕业成为GIS开发工程师已有一年多的时间,时间很短,短到不过人一生中工作时限的3.75%,时间很长,长到收藏夹已经从零攒到了一千四百多条记录,OneNote上也记录了几十…

ArcGIS Engine二次开发

目录 1 前言 2 准备工作 2.1 License的加入 2.2 ToolStrip控件 2.3 MenuStrip控件 2.4 帮助文档的查看 3 数据加载 3.1 矢量数据的加载 3.2 栅格数据的加载 4 地图浏览功能 1 前言 这是一份关于ArcGIS Engine二次开发的一份报告总结,在这份报告中包含了简单的…

ArcGIS二次开发知识点总结

空间分析定义:空间分析是指分析具有空间坐标或相对位置的数据和过程的理论和方法,是对地理空间现象的定量研究,其目的在于提取并传输空间数据中隐含的空间信息。 叠置分析定义:是指将同一坐标系统下不同信息表达的两组或多组专题…

【ArcGIS Pro二次开发】(31):ArcGIS Pro中的多线程

ArcGIS Pro与旧的ArcGIS桌面应用程序的显著不同之处在于,它采用多线程架构,可以有效的发挥多核CPU的优势。这使得二次开发工具的性能变得更好,但也对开发工作带来了更多的难点和挑战。 一、多线程需要注意的问题 一般情况下,为了…

GIS二次开发:实验一 ArcGIS Engine 开发初步

实验一 ArcGIS Engine 开发初步 一、实验目的 掌握ArcGIS Engine的安装;熟悉ArcGIS Engine中几个常用的控件;搭建第一个简单的ArcGIS Engine 程序;通过ICommand接口添加地图浏览工具。 二、实验仪器与设备 计算机、visual studio 软件、A…

Arcgis二次开发软件安装(Arcgis10.2、VS2012、AE10.2)

目录 一、序言 二、Arcgis10.2安装 (一)安装ArcGIS License Manager 1.1 ArcGIS License Manager安装 1.2 ArcGIS License Manager配置 (二)安装ArcGIS Desktop 1.1ArcGIS Desktop安装 1.2.ArcGIS文件替换 1.3中文显示与…

StackPanel 实现从上往下+从右往左 排列+RenderTransform特效实例分析

StackPanel:将子元素排列到可沿水平或垂直放置的行。 参考资料: 1. StackPanel类 2. Silverlight学习笔记(九)——RenderTransform特效【五种基本变换】及【矩阵变换MatrixTransform】 3. MatrixTransform矩阵变换 stack表明StackPane…

控件篇 - 子控件在StackPanel里的居中问题

如下面代码&#xff1a; <StackPanel Width"200" Height"80" Background"Tomato"><TextBlock HorizontalAlignment"Center" VerticalAlignment"Center" Text"ABCD"/></StackPanel> 原意是想通…

Docker Stack

大规模场景下的多服务部署和管理是一件很难的事情。Docker Stack 为解决该问题而生&#xff0c;Docker Stack 通过提供期望状态、滚动升级、简单易用、扩缩容、健康检查等特性简化了应用的管理&#xff0c;这些功能都封装在一个完美的声明式模型当中。 Stack 能够在单个声明文…

StackPanel布局

StackPanel可以把内部元素在纵向或横向上紧凑排列&#xff0c;形成栈式布局。 示例代码&#xff1a; <Grid><GroupBox Header"请选择没有错别字的成语" BorderBrush"Black" Margin"5"><StackPanel Margin"5" Heig…

2.12 Stack

2.12 Stack Stack也是List接口的实现类之一&#xff0c;和Vector一样&#xff0c;因为性能原因&#xff0c;更主要在开发过程中很少用到栈这种数据结构&#xff0c;不过栈在计算机底层是一种非常重要的数据结构&#xff0c;下边将探讨下Java中Stack。 2.12.1 Stack的继承关系 …

wpf之StackPanel布局

注意两个参数&#xff1a; Orientation &#xff1a;控制排列是水平方向&#xff0c;还是垂直方向&#xff08;Horizontal 水平方向 Vertical垂直方向&#xff09; FlowDirection&#xff1a;控制控件排序是从右往左还是从左往右&#xff0c;写两个简单的demo如下&#xff…

四、StackPanel控件

StackPanel可以把内部控件在纵向或横向上紧凑排列、形成栈式布局&#xff0c;当上层控件不被删除时&#xff0c;剩余的控件会前移&#xff0c;填充空白 特点&#xff1a; 同类控件紧凑排列移除其中…

WPF 控制StackPanel用法

StackPanel是非常相似的WrapPanel&#xff0c;但至少有一个重要的区别&#xff1a;StackPanel的不换行的内容。相反&#xff0c;它将内容向一个方向拉伸&#xff0c;允许您将一项一项一项地堆叠在一起。让我们首先尝试一个非常简单的示例&#xff0c;就像我们对 WrapPanel 所做…

2021-08-16 WPF控件专题 StackPanel 控件详解

1.StackPanel 控件介绍 堆栈面板 —布局控件 —Panel 子元素排列成一行或一列 水平 垂直 FlowDirection 子元素的流动方向 Orientation&#xff1a;Horizontal 一行 一般设置VerticalAlignment&#xff1a;Top Bottom Center Stretch Vertical 一列 HorizontalAlignment Left…

WPF中StackPanel的尺寸的怪癖

前几天写了文章&#xff1a;WPF中的DataGrid控件的VerticalScrollBarVisibility属性失效 今天继续补充StackPanel的特点&#xff0c;可以作为对上述文章的进一步解释。 在WPF中&#xff0c;StackPanel是十分常用的布局元素。然而&#xff0c;该元素和很多其它元素不同&#x…

StackPanel

原文链接&#xff1a;http://www.cnblogs.com/Jennifer/articles/1987757.html Canvas、StackPanel、WrapPanel、DockPanel和Grid是WPF中主要的5种内建面板&#xff0c;这些面板类都位于System.Windows.Controls命名空间下。 StackPanel是一个受欢迎的面板&#xff0c;因为它方…

WPF中的StackPanel、WrapPanel、DockPanel

一、StackPanel StackPanel是以堆叠的方式显示其中的控件 1、可以使用Orientation属性更改堆叠的顺序 Orientation"Vertical" 默认&#xff0c;由上到下显示各控件。控件在未定义的前提下&#xff0c;宽度为StackPanel的宽度&#xff0c;高度自动适应控件中内容的高…