ArcGIS二次开发基础教程(02):地图导航和鹰眼「建议收藏」

ArcGIS二次开发基础教程(02):地图导航和鹰眼「建议收藏」ArcGIS二次开发基础教程(02):地图导航和鹰眼地图导航(主要是调用命令和工具)地图的放缩和漫游if(axMapControl1.CurrentTool==null){ICommandicc;//地图放大 ITooltool=newControlsMapZoomInToolClass();//地图缩小//ITooltool…

大家好,又见面了,我是你们的朋友全栈君。

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应用技能大赛开发题答案点这里,尚在不定期更新中

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163452.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软件测试(3) UFT12使用_GUITest

    软件测试(3) UFT12使用_GUITest环境:UFT12,Win10,VS2015&VS2017启动UFT12,为了启动方便修改快捷方式。设置插件,WPF相关的都设置起来。新建项目点击录制按钮(F6),设置启动程序。确定,开始录制。程序启动,显示登录界面。操作:切换IP,点击按钮,登录。点击工具栏按钮,停止录制。点击运行按钮(F5)。

    2022年5月27日
    63
  • java是什么?java能用来干嘛?[通俗易懂]

    java是什么?java能用来干嘛?[通俗易懂]java是什么?java能用来干嘛?Java是一种开发语言(核心特点:跨平台,面向对象,名称由来看这里:J2EE里面的2是什么意思),对于开发者来讲,Java基本等于Jdk。Java由四方面组成:Java编程语言,即语法。Java文件格式,即各种文件夹、文件的后缀。Java文件格式,即各种文件夹、文件的后缀。Java虚拟机(JVM),即处理*.class文件的解释器。Java应…

    2022年7月7日
    23
  • 闫学灿acwing_算法基础课acwing下载

    闫学灿acwing_算法基础课acwing下载给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一:C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。Q l r,表示询问数列中第 l∼r 个数的和。对于每个询问,输出一个整数表示答案。输入格式第一行两个整数 N,M。第二行 N 个整数 A[i]。接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。输出格式对于每个询问,输出一个整数表示答案。每个答案占一行。数据范围1≤N,M≤105,|d|≤10000,|A[i]|≤1

    2022年8月9日
    23
  • 腾讯云免费ssl证书有几个_腾讯云ssl

    腾讯云免费ssl证书有几个_腾讯云ssl腾讯云免费SSL证书腾讯云免费证书是由亚洲诚信(TrustAsia)提供的,由Digicert根证书签发。域名类型单域名,证书有效期为1年。限制同一主域最多只能申请20张。一级域名及其子域名均属于同一主域。如果超过此限制可以到其他平台申请免费的证书。如果需要免费的泛域名证书或多域名证书,可以了解一下来此加密。来此加密:提供免费的泛域名证书,多域名证书,可自动验证,自动续签。SDSDS腾讯云免费SSL证书限制…

    2025年10月16日
    3
  • JavaScript概述

    JavaScript概述JavaScript概述

    2022年4月24日
    30
  • mac datagrip2021 激活码[在线序列号]

    mac datagrip2021 激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    120

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号