/// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { IEnumFeature pEnumFeature = (IEnumFeature)m_MapControl.Map.FeatureSelection; IFeature pFeature = pEnumFeature.Next(); IEnvelope pEnvelope = new EnvelopeClass(); if (pFeature != null) { if (pFeature.ShapeCopy.GeometryType == esriGeometryType.esriGeometryPoint) { IPoint pPoint = new PointClass(); pPoint.X = (pFeature.Extent.XMax + pFeature.Extent.XMin) / 2; pPoint.Y = (pFeature.Extent.YMax + pFeature.Extent.YMin) / 2; m_MapControl.CenterAt(pPoint); } else { while (pFeature != null) { pEnvelope.Union(pFeature.Extent); pFeature = pEnumFeature.Next(); } } m_MapControl.ActiveView.Extent = pEnvelope; m_MapControl.ActiveView.Refresh(); } }
public static void ZoomToFeature(IFeature pFeat, IMapControlDefault mapCtl) { if (pFeat.Shape.GeometryType == esriGeometryType.esriGeometryPoint) { mapCtl.CenterAt((Point)pFeat); } else { mapCtl.ActiveView.Extent = pFeat.Extent; } mapCtl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); return; }
private void buttonOK_Click(object sender, EventArgs e) { this.Visible = false; if (_axmapcontrol != null) { try { IEnvelope penvelope = new EnvelopeClass(); penvelope.XMin = Convert.ToDouble(textBoxWest.Text); penvelope.XMax = Convert.ToDouble(textBoxEast.Text); penvelope.YMax = Convert.ToDouble(textBoxNorth.Text); penvelope.YMin = Convert.ToDouble(textBoxSouth.Text); IPoint pmiddle = new PointClass(); pmiddle.PutCoords((penvelope.XMax + penvelope.XMin) / 2, (penvelope.YMax + penvelope.YMin) / 2);//中心点 /*********************************将Envelope转成Polygon*/ IPolygon pon = new PolygonClass(); IPointCollection ptcoll = new PolygonClass(); IPoint a = new PointClass(); IPoint b = new PointClass(); IPoint c = new PointClass(); IPoint d = new PointClass(); a.PutCoords(penvelope.XMin, penvelope.YMax); b.PutCoords(penvelope.XMax, penvelope.YMax); c.PutCoords(penvelope.XMax, penvelope.YMin); d.PutCoords(penvelope.XMin, penvelope.YMin); object missing = Type.Missing; ptcoll.AddPoint(a, ref missing, ref missing); ptcoll.AddPoint(b, ref missing, ref missing); ptcoll.AddPoint(c, ref missing, ref missing); ptcoll.AddPoint(d, ref missing, ref missing); pon = ptcoll as IPolygon; /*********************************/ IGeometry geo = new PolygonClass(); geo = pon as IGeometry; /*-----xisheng 20110802------*/ ISpatialReference earthref = null; ISpatialReference flatref = null; ISpatialReferenceFactory2 pSpatRefFac = new SpatialReferenceEnvironmentClass(); earthref = pSpatRefFac.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984); if (this.WriteLog) { Plugin.LogTable.Writelog(this.Text);//xisheng 日志记录 0928; } if (_axmapcontrol.MapUnits == esriUnits.esriMeters) { flatref = _axmapcontrol.Map.SpatialReference; geo.SpatialReference = flatref;//yjl20110812 //geo.Project(flatref); } /*-----xisheng 20110802------*/ //创建Topo对象,简化后统一空间参考 ITopologicalOperator pTopo = (ITopologicalOperator)geo; pTopo.Simplify(); geo.Project(_axmapcontrol.Map.SpatialReference); if (m_frmQuery == null) { m_frmQuery = new frmQuery(_axmapcontrol, m_enumQueryMode); m_frmQuery.Owner = m_mainFrm; m_frmQuery.FormClosed += new FormClosedEventHandler(frmQuery_FormClosed); } //清除上次的所有元素 (_axmapcontrol.Map as IGraphicsContainer).DeleteAllElements(); m_frmBufferSet = new frmBufferSet(geo, _axmapcontrol.Map, m_frmQuery); m_frmBufferSet.FormClosed += new FormClosedEventHandler(frmBufferSet_FormClosed); _axmapcontrol.CenterAt(pmiddle); IGeometry pGeometry = m_frmBufferSet.GetBufferGeometry(); if (pGeometry == null || m_frmBufferSet.Res == false) { return; } m_frmQuery.Show(); ///ZQ 20111119 modify m_frmQuery.FillData(_axmapcontrol.ActiveView.FocusMap, pGeometry, m_frmBufferSet.pesriSpatialRelEnum); this.Close(); } catch (Exception ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "错误:" + ex.Message); } } }
private void buttonOK_Click(object sender, EventArgs e) { this.Visible = false; if (_axmapcontrol != null) { try { /*xisheng 20110802 */ ISpatialReferenceFactory2 pSpatRefFac = new SpatialReferenceEnvironmentClass(); earthref = pSpatRefFac.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984); point = new ESRI.ArcGIS.Geometry.PointClass(); double x1 = Convert.ToDouble(textBoxX.Text); double y1 = Convert.ToDouble(textBoxY.Text); if (_axmapcontrol.MapUnits == esriUnits.esriMeters) { flatref = _axmapcontrol.Map.SpatialReference; point.PutCoords(x1, y1);//yjl20110812 } else if (_axmapcontrol.MapUnits == esriUnits.esriDecimalDegrees) { point.PutCoords(x1, y1); } // ESRI.ArcGIS.Geometry.IPoint pPoint = _axmapcontrol.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(Convert.ToInt32(point.X), Convert.ToInt32(point.Y)); //end 0802 if (this.WriteLog) { Plugin.LogTable.Writelog(this.Text);//xisheng 日志记录 0928; } if (m_frmQuery == null) { m_frmQuery = new frmQuery(_axmapcontrol, m_enumQueryMode); m_frmQuery.Owner = m_mainFrm; m_frmQuery.FormClosed += new FormClosedEventHandler(frmQuery_FormClosed); } if (m_frmBufferSet != null) { m_frmBufferSet.setBufferGeometry(null); m_frmBufferSet = null; } m_frmBufferSet = new frmBufferSet(point as IGeometry, _axmapcontrol.Map, m_frmQuery); m_frmBufferSet.FormClosed += new FormClosedEventHandler(frmBufferSet_FormClosed); _axmapcontrol.CenterAt(point); IGeometry pGeometry = m_frmBufferSet.GetBufferGeometry(); if (pGeometry == null || m_frmBufferSet.Res == false) { return; } //m_frmQuery.Show(); ///ZQ 20111119 modify //m_frmQuery.FillData(_axmapcontrol.ActiveView.FocusMap, pGeometry, m_frmBufferSet.pesriSpatialRelEnum); QueryBar.m_pMapControl = _axmapcontrol; QueryBar.EmergeQueryData(_axmapcontrol.ActiveView.FocusMap, pGeometry, m_frmBufferSet.pesriSpatialRelEnum); try { DevComponents.DotNetBar.Bar pBar = QueryBar.Parent.Parent as DevComponents.DotNetBar.Bar; if (pBar != null) { pBar.AutoHide = false; //pBar.SelectedDockTab = 1; int tmpindex = pBar.Items.IndexOf("dockItemDataCheck"); pBar.SelectedDockTab = tmpindex; } } catch { } this.Close(); } catch (Exception ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "错误:" + ex.Message); } } }