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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 学习笔记——机器学习–多项式分布及Softmax回归模型推导[通俗易懂]

    学习笔记——机器学习–多项式分布及Softmax回归模型推导[通俗易懂]在一个多分类问题,预测变量yyy可以取kkk个离散值中的任何一个,即y∈{1,2,⋯,k}y∈{1,2,⋯,k}y\in\{1,2,\cdots,k\}。例如:在一个邮件分类系统将邮件分为私人邮件,工作邮件和垃圾邮件。由于yyy仍然是一个离散值,这种多分类问题,二分类模型在这里不太适用。多分类问题符合多项分布。有许多算法可用于解决多分类问题,像决策树、朴素贝叶斯等。本文主要讲解多分类算…

    2022年10月12日
    2
  • web网络聊天室

    web网络聊天室花了四天时间做了一个简单的web聊天室前端页面效果大概是下面这个样子1.登陆界面2.注册界面这里首先会检查用户名是否重复,如果重复,会提示你用户名已存在反正显示可用3.聊天室界面登陆成功会在左边显示登陆人的名称以及当前在线人数。然后在下面可用选择对谁说以及一些文字表情,字体颜色什么的4.聊天功能会显示发送者名称,以及对谁说,语气词,以及发送时间最后总结一下做的…

    2022年6月22日
    28
  • Mysql8.0安装步骤「建议收藏」

    第一步:下载安装包MYSQL官方下载地址:官方下载这里第一项是在线安装,第二项是离线包安装,我选择的是第二项(不用管你电脑是多少位的操作系统),因为:Note:MySQLInstalleris32bit,butwillinstallboth32bitand64bitbinaries.不用注册、登录,直接选择左下按钮下载:Nothanks,ju…

    2022年4月14日
    54
  • SiamFC 学习(论文、总结与分析)

    SiamFC 学习(论文、总结与分析)文章目录前言一、SiamFC论文学习1.介绍2.深度相似学习在跟踪中的应用2.1全卷积孪生结构3.引入库二、使用步骤1.引入库2.读入数据总结前言之前看了关于siamFC的论文、博客和代码,已经跑通了代码,但是,只是大概初步学习,没有认真的研究细节。为了后面更好的学习Siam系列的算法还是要重新认真的学习SiamFC。先附上论文和代码。论文:Fully-ConvolutionalSiameseNetworksforObjectTracking代码:基于pytorch框架的htt

    2022年10月1日
    4
  • spfa(链式前向星)+dijkstra(链式前向星)

    spfa(链式前向星)+dijkstra(链式前向星)链式前向星链式前向星可以存图,它存图的方式是:将任意一个节点的所有临边按输入顺序依次连接起来将任意一个节点的所有临边按输入顺序依次连接起来将任意一个节点的所有临边按输入顺序依次连接起来然后头节点(数组)存的是最后一个临边的地址然后头节点(数组)存的是最后一个临边的地址然后头节点(数组)存的是最后一个临边的地址inthead[maxn];//head[i]中i是u->v中的u,he…

    2025年6月21日
    3
  • 813. Largest Sum of Averages

    813. Largest Sum of Averages

    2021年5月27日
    85

发表回复

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

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