1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using ESRI.ArcGIS.Controls;
  10. using ESRI.ArcGIS.esriSystem;
  11. using ESRI.ArcGIS.Geodatabase;
  12. using ESRI.ArcGIS.DataSourcesRaster;
  13. using DevComponents.DotNetBar;
  14.  
  15. using System.Runtime.InteropServices;
  16. using ESRI.ArcGIS.ADF.BaseClasses;
  17. using ESRI.ArcGIS.ADF.CATIDs;
  18. using ESRI.ArcGIS.Carto;
  19. using ESRI.ArcGIS.Geometry;
  20. using ESRI.ArcGIS.Output;
  21. using ESRI.ArcGIS.SystemUI;
  22. using ESRI.ArcGIS.Display;
  1. private void btAddMdb_Click_1(object sender, EventArgs e) //添加mdb数据库打开数据
  2. {
  3. OpenFileDialog dlg = new OpenFileDialog();
  4. dlg.Filter = " Personal Geodatabase(*.mdb)|*.mdb|All Files(*.*)|*.* ";
  5. dlg.Title = " Open PersonGeodatabase file ";
  6. if (dlg.ShowDialog() != DialogResult.OK) return;
  7. commonfun.load_Mdb(dlg.FileName, axMap);
  8. AddLayerToOverViewMap(); //加入地图到鹰眼里
  9. axMap.Refresh();
  10. }

  

  1. private void axMap_OnMapReplaced(object sender, IMapControlEvents2_OnMapReplacedEvent e)
  2. {
  3. #region 添加鹰眼 载入地图到鹰眼控件
  4. AddLayerToOverViewMap();
  5. #endregion
  6. }
  1. #region 鹰眼功能
  2. /// <summary>
  3. /// 把地图加到鹰眼里的方法,
    ///该段代码摘自http://www.cnblogs.com/zya-gis/archive/2009/04/17/1438033.html,非常好用,解决了我鹰眼一直不能显示的问题
  4. /// </summary>
  5. private void AddLayerToOverViewMap()
  6. {
  7. axMapSmall.ClearLayers();
  8. for (int i = ; i < axMap.LayerCount; i++)
  9. {
  10. IObjectCopy objectcopy = new ObjectCopyClass();
  11. object toCopyLayer = axMap.get_Layer(i);
  12. object copiedLayer = objectcopy.Copy(toCopyLayer);
  13. ILayer C = (new FeatureLayerClass()) as ILayer;
  14. object toOverwriteLayer = C;
  15. objectcopy.Overwrite(copiedLayer, ref toOverwriteLayer);
  16. axMapSmall.AddLayer(C, i);
  17. }
  18. }
  19. private void axMap_OnExtentUpdated(object sender, IMapControlEvents2_OnExtentUpdatedEvent e) //绘制鹰眼矩形框
  20. {
  21. try
  22. {
  23. //得到范围
  24. IEnvelope pEnv = e.newEnvelope as IEnvelope;
  25. IGraphicsContainer pGraphicsContainer = axMapSmall.Map as IGraphicsContainer;
  26. IActiveView pActiveView = pGraphicsContainer as IActiveView;
  27. //在绘制新的矩形框前,清楚、清除Map对象中的任何图形元素
  28. pGraphicsContainer.DeleteAllElements();
  29. IRectangleElement pRectangleEle = new RectangleElementClass();
  30. IElement pEle = pRectangleEle as IElement;
  31. pEle.Geometry = pEnv;
  32. IRgbColor pColor = new RgbColorClass();
  33. pColor.RGB = ;
  34. pColor.Transparency = ;
  35. //产生一个线符号对象
  36. ILineSymbol pOutLine = new SimpleLineSymbolClass();
  37. pOutLine.Width = ;
  38. pOutLine.Color = pColor;
  39. //设置颜色属性
  40. pColor.RGB = ; pColor.Transparency = ;
  41. //设置填充符号的属性
  42. IFillSymbol pFillsymbol = new SimpleFillSymbolClass();
  43. pFillsymbol.Color = pColor;
  44. pFillsymbol.Outline = pOutLine;
  45. IFillShapeElement pFillshapEle;
  46. pFillshapEle = pEle as IFillShapeElement;
  47. pFillshapEle.Symbol = pFillsymbol;
  48. pEle = pFillshapEle as IElement;
  49. pGraphicsContainer.AddElement(pEle, );
  50. pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
  51. }
  52. catch (Exception ey)
  53. {
  54.  
  55. }
  56. }
  57. private void axMapSmall_OnMouseDown(object sender, AxESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseDownEvent e) //鹰眼与主 Map 控件互动
  58. {
  59. if (this.axMapSmall.Map.LayerCount != )
  60. {
  61. // 按下鼠标左键移动矩形框
  62. if (e.button == )
  63. {
  64. IPoint pPoint = new PointClass();
  65. pPoint.PutCoords(e.mapX, e.mapY);
  66. IEnvelope pEnvelope = this.axMap.Extent;
  67. pEnvelope.CenterAt(pPoint);
  68. this.axMap.Extent = pEnvelope;
  69. this.axMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
  70. }
  71.  
  72. // 按下鼠标右键绘制矩形框
  73. else if (e.button == )
  74. {
  75. IEnvelope pEnvelop = this.axMapSmall.TrackRectangle();
  76. this.axMap.Extent = pEnvelop;
  77. this.axMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
  78. }
  79.  
  80. }
  81. }
  82. private void axMapSmall_OnMouseMove(object sender, AxESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseMoveEvent e) //按下鼠标左键的时候移动矩形框,同时也改变主的图控件的显示范围
  83. {
  84. // 如果不是左键按下就直接返回
  85. if (e.button != ) return;
  86. IPoint pPoint = new PointClass();
  87. pPoint.PutCoords(e.mapX, e.mapY);
  88. this.axMap.CenterAt(pPoint);
  89. this.axMap.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null);
  90. }
  91. #endregion 鹰眼功能完结

放效果图一张:

C#+arcengine10.0+SP5实现鹰眼(加载的是mdb数据库中的数据)的更多相关文章

  1. [Asp.net mvc]实体更新异常:存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。

    学习asp.net mvc 时在更新实体进行SaveChanges()的时候出现了异常,异常如下: “/”应用程序中的服务器错误. 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能 ...

  2. 存储区更新、插入或删除语句影响到了意外的行数(0)。实体在加载后可能被修改或删除。刷新 ObjectStateManager 项。

    在用asp.net MVC3 的MusicStore时候 Edit某个数据项时提示下面的错误: 存储区更新.插入或删除语句影响到了意外的行数(0).实体在加载后可能被修改或删除.刷新 ObjectSt ...

  3. HTTP 筛选器 DLL C:\Windows\Microsoft.Net\Framework\v4.0.30319\aspnet_filter.dll 加载失败。数据是错误。

    今天在一台win2003的云主机上,安装.net 4.0时,所有的网站都打不开了.打开事件查看器,发现以下错误: HTTP 筛选器 DLL C:\Windows\Microsoft.Net\Frame ...

  4. 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)

    AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...

  5. 用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法

    S3C44B0开发板中,用UBOOT自带loadb命令加载应用程序到SDRAM中运行的方法    1.开发板说明:  开发板上已有移植好的UBOOT运行.   2.交叉编译工具链为arm-linu-g ...

  6. MVC学习系列6--使用Ajax加载分部视图和Json格式的数据

    Ajax的应用在平时的工作中,很是常见,这篇文章,完全是为了,巩固复习. 我们先看看不使用json格式返回分部视图: 先说需求吧: 我有两个实体,一个是出版商[Publisher],一个是书[Book ...

  7. 无法为具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“MySql.Data.MySqlClient.MySqlProviderServices,MySql.Data.Entity.EF6”

    "System.InvalidOperationException"类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 无法为具有固定名称"MySql. ...

  8. 无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer”。请确保使用限定程序集的名称且该程序集对运行的应用程序可用。有关详细信息,请参阅 http://go.m

    Windows服务中程序发布之后会如下错误: 无法为具有固定名称“System.Data.SqlClient”的 ADO.NET 提供程序加载在应用程序配置文件中注册的实体框架提供程序类型“Syste ...

  9. InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式

    InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...

随机推荐

  1. Java NIO2:缓冲区

    什么是缓冲区 一个缓冲区对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索.缓冲区像前篇文章讨论的那样被写满和释放,对于每个非布尔原始数据类型都有一个缓 ...

  2. Angular遇上CoffeeScript - NgComponent封装

    CoffeeScript是基于JavaScript的一门扩展小巧语言,它需要编译成JavaScript,然后再运行与浏览器或者Nodejs平台.JavaScript由于商业原因10天时间就匆忙诞生,所 ...

  3. Mycat 全局系列号

    标签:utf8 概述 本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点. 配置 文件方式获取 1.修改server配置文件 vim server. ...

  4. spring-boot 和 docker 集成

    描述 java 的 Spring是一个很火的框架,Spring boot 这个也不用说了,Docker 近年也很火热, 本文就介绍下我在 Spring boot + Docker的集成一些经验 :) ...

  5. 【夔堂】:程序血泪史之——有一种垃圾语言叫做JavaScript

    "Prototype"机制是个半成品OOP,有些文章说这玩意当初为了"简单(编写).容易(学习)"而发明的,但web前端技术发展到今天我们看到,JS显然是需要O ...

  6. CSS3学习总结3-3D与动画

    前言:这是篇CSS3中关于3D效果与动画相关的内容. (1)在CSS3的3D效果中,需要结合透视perspective的属性才能看到3d的效果,这个属性在屏幕上实现了元素近大远小的效果,所以要使用CS ...

  7. 【解决】Word 在试图打开文件时遇到错误 请尝试下列方法:* xxx * xxx * xxx

    有好几种情况,我先说我的这个情况 1.word设置不当导致 看图: 然后就能打开了~ 2.word格式问题,比如原来是doc,被人手动改成docx~~~ 解决方法:改回来 3.word版本不兼容,比如 ...

  8. 深入理解DOM事件类型系列第一篇——鼠标事件

    × 目录 [1]类型 [2]顺序 [3]坐标位置[4]修改键[5]相关元素[6]鼠标按键[7]滚轮事件[8]移动设备 前面的话 鼠标事件是web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备.本文 ...

  9. jsp通过易宝方式实现在线支付

    项目下载地址: https://github.com/hjzgg/OnlinePayment 参考:http://blog.csdn.net/jadyer/article/details/738025 ...

  10. 创建第一个 local network(I) - 每天5分钟玩转 OpenStack(80)

    在 ML2 配置文件中 enable local network 后,本节将开始创建第一个 local network. 我们将通过 Web GUI 创建第一个 local network. 首先确保 ...