Exemple #1
0
 private void SynchronizeEagleEye()         //加载鹰眼视图
 {
     if (EagleEyemapcontrol.LayerCount > 0) //清除原有图层
     {
         EagleEyemapcontrol.ClearLayers();
     }
     EagleEyemapcontrol.SpatialReference = axMapControl1.SpatialReference;//鹰眼视图坐标系和主地图坐标系相同
     for (int i = axMapControl1.LayerCount - 1; i >= 0; i--)
     {
         ILayer player = axMapControl1.get_Layer(i);                    //获取第i个视图
         if (player is IGroupLayer || player is ICompositeLayer)        //判断此视图是否内置还有图层
         {
             ICompositeLayer pcompositelayer = (ICompositeLayer)player; //强制转换
             for (int j = pcompositelayer.Count - 1; j >= 0; j--)
             {
                 ILayer        psublayer     = pcompositelayer.get_Layer(j); //获取此视图中第i个图层
                 IFeatureLayer pfeaturelayer = psublayer as IFeatureLayer;   //获得此图层作为要素图层
                 if (pfeaturelayer == null)
                 {
                     continue;                       //此图层为空则返回进行下一个图层操作
                 }
                 if (pfeaturelayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pfeaturelayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint)
                 {
                     EagleEyemapcontrol.AddLayer(player);
                 }
             }
         }
         else
         {
             IFeatureLayer pfeaturelayer1 = new FeatureLayer();
             pfeaturelayer1 = player as IFeatureLayer;
             if (pfeaturelayer1 == null)
             {
                 continue;
             }
             if (pfeaturelayer1 != null)
             {
                 if (pfeaturelayer1.FeatureClass == null)
                 {
                     return;
                 }
                 else
                 {
                     if (pfeaturelayer1.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pfeaturelayer1.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint)
                     {
                         EagleEyemapcontrol.AddLayer(player);
                     }
                 }
             }
         }
         EagleEyemapcontrol.Extent = axMapControl1.FullExtent;
         pEnv = axMapControl1.Extent;
         DrawRectangle(pEnv);//定义一个函数,在鹰眼视图上画矩形框
         EagleEyemapcontrol.Refresh();
     }
 }
Exemple #2
0
 private void EagleEyemapcontrol_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
 {
     if (EagleEyemapcontrol.Map.LayerCount <= 0)
     {
         return;
     }
     if (e.button == 1) //单击左键移动矩形框
     {
         if (e.mapX > pEnv.XMin && e.mapY > pEnv.YMin && e.mapX < pEnv.XMax && e.mapY < pEnv.YMax)
         {
             bCanDrag = true;
         }
         pMoveRectPoint = new PointClass();
         pMoveRectPoint.PutCoords(e.mapX, e.mapY);
     }
     else if (e.button == 2)//单击右键绘制矩形框
     {
         IEnvelope penvelope  = EagleEyemapcontrol.TrackRectangle();
         IPoint    ptemppoint = new PointClass();
         ptemppoint.PutCoords(penvelope.XMin + penvelope.Width / 2, penvelope.YMin + penvelope.Height / 2);
         axMapControl1.Extent = penvelope;
         axMapControl1.CenterAt(ptemppoint);//做一个中心调整
     }
 }