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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • SQL语句中创建表的语句_用sql创建表

    SQL语句中创建表的语句_用sql创建表mysql创建表的sql语句mysql建表常用sql语句:连接:mysql-h主机地址-u用户名-p用户密码(注:u与root可以不用加空格,其它也一样)断开:exit(回车)创建授权:grantselecton数据库.*to用户名@登录主机identifiedby”密码”修改密码:mysqladmin-u用户名-p旧密码password新密码删除授权:revo…

    2022年10月17日
  • IntelliJ IDEA中怎么全局搜索替换(整个项目)(Eclipse)

    IntelliJ IDEA中怎么全局搜索替换(整个项目)(Eclipse)IntelliJIDEA使用教程(总目录篇)我们用Eclipse或者IntelliJIDEA编程,有时候需要将整个项目的某个字符串替换成其他的。全局搜索我会,我还给调成ctrl+g了呢,但是遇到要全局(整个项目)替换字符串。哎哟,我有点蒙了。这不换了编辑器吗。我用的是eclipse的keymap而且电脑又不是mac。那么问题来啦。怎么找快捷键呢。如下;额,顺便说下…

  • goland2021 激活码[在线序列号]「建议收藏」

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

  • webstorm激活码【中文破解版】

    (webstorm激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.htmlMLZPB5EL5Q-eyJsaWNlbnNlSW…

  • 微生物组助手——最易学的扩增子、宏基因组分析流程

    微生物组助手——最易学的扩增子、宏基因组分析流程软件简介MicrobiomeHelper开源软件,方便大家分析微生物组数据。不仅提供了多套扩增子、宏基因组的分析流程方案,同时提供了几十个软件间衔接的脚本,可大大提高使用者分析的效率。文章于2017年发表于mSystems。Github项目主页:https://github.com/LangilleLab/microbiome_helpermicrobiomehelp结合不同组…

  • allegro转pads方法_pads原理图转cadence

    allegro转pads方法_pads原理图转cadence1、首先电脑上安装好三个软件。我的是AD21、Cadence16.6、PADS9.52、先把BRD文件用AD21直接导入,AD21支持直接导入BRD文件的,然后导出低版本AD即可。3、再用PADS9.5安装自带的一个转换功率,叫PADSTanslation,直接导入AD低版本文件转换出PADS的文件即可。…

    2022年10月22日

发表回复

您的电子邮箱地址不会被公开。

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