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(); } }
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);//做一个中心调整 } }