方法1: // 不能根据数据库的查询条件进行选择 ESRI.ArcGIS.ADF.IMS.Geometry.Envelope env = null ; Filter queryFilter = new Filter( " sde.SDE.SZPOINT.点位ID=164 " ); // Get feature count - using previously retrieved layer object; no selection buffer int featureCount = theLayer.GetFeatureCount(queryFilter, null , out env); ESRI.ArcGIS.ADF.Web.Geometry.Envelope pEnv = (ESRI.ArcGIS.ADF.Web.Geometry.Envelope)ESRI.ArcGIS.ADF.Web.Geometry.Geometry.GetMinimumEnclosingEnvelope(ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(env)); Map1.Extent.XMax = pEnv.XMax + 500 ; Map1.Extent.XMin = pEnv.XMin - 500 ; Map1.Extent.YMax = pEnv.YMax + 500 ; Map1.Extent.YMin = pEnv.YMin - 500 ; 方法2: // 可以根据关联后的数据库中的查询条件来对结果进行定位 ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter electionFilter = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter(); electionFilter.JoinTables.Add(JoinTable); electionFilter.WhereExpression = " sde.SDE.SZPOINT.点位ID=zwbj.dbo.v_projectinfo_full.location_id and " + strWhere; ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters queryPara = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters(electionFilter); queryPara.ReturnGlobalEnvelope = true ; queryPara.FeatureLimit = 1000 ; ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureTable featTable = theLayer.Query(queryPara); Map1.Extent.XMax = featTable.GlobalEnvelope.XMax; Map1.Extent.XMin = featTable.GlobalEnvelope.XMin; Map1.Extent.YMax = featTable.GlobalEnvelope.YMax; Map1.Extent.YMin = featTable.GlobalEnvelope.YMin; 方法3: // 只能通过图层里的字段查询进行定位 ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter queryFilter = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.Filter(); queryFilter.JoinTables.Add(JoinTable); queryFilter.WhereExpression = " 查询条件 " ; ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters queryParameters = new ESRI.ArcGIS.ADF.IMS.Carto.Layer.QueryParameters(queryFilter); queryParameters.ReturnGlobalEnvelope = true ; queryParameters.ReturnGeometries = true ; queryParameters.ReturnEnvelopes = true ; ESRI.ArcGIS.ADF.IMS.Data.Dataset ds = theLayer.Dataset; // 执行查询 ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureTable featureTable = theLayer.Query(queryParameters); if (featureTable == null || featureTable.Rows.Count == 0 ) ... { } // 定位到单点 if (featureTable.Rows.Count == 1 ) ... { string geometryColumn = String.Empty; foreach (DataColumn col in featureTable.Columns) ...{ if (col.DataType == typeof(ESRI.ArcGIS.ADF.IMS.Geometry.Geometry)) ...{ geometryColumn = col.ColumnName; break; } } ESRI.ArcGIS.ADF.IMS.Geometry.Multipoint featureMultiPt; ESRI.ArcGIS.ADF.IMS.Geometry.Point pt = null; if (geometryColumn != String.Empty) ...{ // Retrieve the geometry (point) for each city, add to point collection foreach (DataRow featureRow in featureTable.Rows) ...{ featureMultiPt = (ESRI.ArcGIS.ADF.IMS.Geometry.Multipoint)featureRow[geometryColumn]; pt = featureMultiPt.Points[0]; } } ESRI.ArcGIS.ADF.Web.Geometry.Point new_adf_point = (ESRI.ArcGIS.ADF.Web.Geometry.Point)ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(pt); Map1.CenterAt(new_adf_point); } // 定位到区域 else ... { ESRI.ArcGIS.ADF.IMS.Geometry.Envelope globalEnvelope = featureTable.GlobalEnvelope; ESRI.ArcGIS.ADF.Web.Geometry.Envelope pEnv = new ESRI.ArcGIS.ADF.Web.Geometry.Envelope(globalEnvelope.XMin, globalEnvelope.YMin, globalEnvelope.XMax, globalEnvelope.YMax); Map1.Extent = pEnv; }