private void EagleEyeMapControl_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) { if (EagleEyeMapControl.Map.LayerCount > 0) { //按下鼠标左键移动矩形框 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 pTemPoint = new PointClass(); pTemPoint.PutCoords(pEnvelope.XMin + pEnvelope.Width / 2, pEnvelope.YMin + pEnvelope.Height / 2); mainMapControl.Extent = pEnvelope; //矩形框的高宽和数据视图的高度不一定成正比,这里要做一个中心调整 mainMapControl.CenterAt(pTemPoint); } } }
//鼠标按下 private void EagleEyeMapControl_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) { try { if (EagleEyeMapControl.Map.LayerCount > 0) { //按下鼠标左键移动矩形框 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); Map.Extent = pEnvelope; //矩形框的高宽和数据试图的高宽不一定成正比,这里做一个中心调整 Map.CenterAt(pTempPoint); } } } catch (Exception exception) { Console.WriteLine(exception); } }
private IEnvelope pEnv; //记录数据视图的Extent /// <summary> /// 同步鹰眼 /// </summary> private void SynchronizeEagleEye() { try { if (EagleEyeMapControl.LayerCount > 0) { EagleEyeMapControl.ClearLayers(); } //设置鹰眼和主地图的坐标系统一致 EagleEyeMapControl.SpatialReference = Map.SpatialReference; for (int i = Map.LayerCount - 1; i >= 0; i--) { //使鹰眼视图与数据视图的图层上下顺序保持一致 ILayer pLayer = Map.get_Layer(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); IFeatureLayer pFeatureLayer = pSubLayer as IFeatureLayer; if (pFeatureLayer != null) { //由于鹰眼地图较小,所以过滤点图层不添加 if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) { EagleEyeMapControl.AddLayer(pLayer); } } } } else { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer != null) { if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) { EagleEyeMapControl.AddLayer(pLayer); } } } //设置鹰眼地图全图显示 EagleEyeMapControl.Extent = Map.FullExtent; pEnv = Map.Extent as IEnvelope; DrawRectangle(pEnv); EagleEyeMapControl.ActiveView.Refresh(); } } catch (Exception e) { ShowError("鹰眼地图刷新失败\n" + e.Message); } }
/// <summary> /// 鹰眼地图控制器按下事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EagleEyeMapControl_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e) { //if (EagleEyeMapControl.Map.LayerCount > 0) //{ // // 按下鼠标左键,移动矩形框 // if (e.button == 1) // { // if (e.mapX > pEnv.XMin && e.mapY > pEnv.YMin && e.mapX < pEnv.XMax && e.mapY < pEnv.YMax) // { // CanDrag = true; // } // MoveRectPoint = new PointClass(); // // 记录点击的第一个点的坐标 // MoveRectPoint.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); // MainMapControl.Extent = pEnvelope; // //矩形框的高宽和数据试图的高宽不一定成正比,这里做一个中心调整 // MainMapControl.CenterAt(pTempPoint); // } //} if (EagleEyeMapControl.Map.LayerCount > 0) { //按下鼠标左键移动矩形框 if (e.button == 1) { //如果指针落在鹰眼的矩形框中,标记可移动 if (e.mapX > pEnv.XMin && e.mapY > pEnv.YMin && e.mapX < pEnv.XMax && e.mapY < pEnv.YMax) { CanDrag = true; } MoveRectPoint = new PointClass(); MoveRectPoint.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); MainMapControl.Extent = pEnvelope; //矩形框的高宽和数据试图的高宽不一定成正比,这里做一个中心调整 MainMapControl.CenterAt(pTempPoint); } } }
private void SynchronizedEagleEye() { if (EagleEyeMapControl.LayerCount > 0) { EagleEyeMapControl.ClearLayers(); } //设置鹰眼和主地图的坐标系统一致 EagleEyeMapControl.SpatialReference = mainMapControl.SpatialReference; for (int i = mainMapControl.LayerCount - 1; i >= 0; i--) { //设置鹰眼视图和数据视图的图层顺序上下保持一致 ILayer pLayer = mainMapControl.get_Layer(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); IFeatureLayer pFeatureLayer = pSubLayer as IFeatureLayer; if (pFeatureLayer != null) { //由于鹰眼地图较小,所以不添加点图层 if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) { EagleEyeMapControl.AddLayer(pLayer); } } } } else { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer != null) { if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) { EagleEyeMapControl.AddLayer(pLayer); } } } //设置鹰眼地图的全局显示 EagleEyeMapControl.Extent = mainMapControl.FullExtent; pEnv = mainMapControl.Extent as IEnvelope; DrawRectangle(pEnv); EagleEyeMapControl.ActiveView.Refresh(); } }
//主视图加载 private void SynchronizeEagleEye() { if (EagleEyeMapControl.LayerCount > 0) { EagleEyeMapControl.ClearLayers(); } //设置鹰眼与主地图的坐标一致 EagleEyeMapControl.SpatialReference = axMapControl3.SpatialReference; //EagleEyeMapControl.Map=new MapClass(); for (int i = axMapControl3.LayerCount - 1; i >= 0; i--) { //使鹰眼视图与数据视图的图层顺序一致 ILayer pLayer = axMapControl3.get_Layer(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); IFeatureLayer pFeatureLayer = pSubLayer as IFeatureLayer; if (pFeatureLayer != null) { //过滤点图层 if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) { EagleEyeMapControl.AddLayer(pFeatureLayer); } } } } else { IFeatureLayer pFeatureLayer = pLayer as IFeatureLayer; if (pFeatureLayer != null) { //过滤点图层 if (pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPoint && pFeatureLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryMultipoint) { EagleEyeMapControl.AddLayer(pFeatureLayer); } } } EagleEyeMapControl.Extent = axMapControl3.FullExtent; pEnv = axMapControl3.Extent as IEnvelope; EagleEyeMapControl.ActiveView.Refresh(); } }
private void EagleEyeMapControl_OnMouseUp(object sender, AxESRI.ArcGIS.Controls.IMapControlEvents2_OnMouseUpEvent e) { if (EagleEyeMapControl.Map.LayerCount > 0) { 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 pTemPoint = new PointClass(); pTemPoint.PutCoords(pEnvelope.XMin + pEnvelope.Width / 2, pEnvelope.YMin + pEnvelope.Height / 2); axMapControl3.Extent = pEnvelope; //对矩形做一个中心调整 axMapControl3.CenterAt(pTemPoint); } } }