[转载] ArcIMS根据查询结果定位并高亮显示(面图层的定位)(ADF+C#)

 //定位到指定的面,并高亮显示
        ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality mf = (ESRI.ArcGIS.ADF.Web.DataSources.IMS.MapFunctionality)Map1.GetFunctionality(0); ;
        ESRI.ArcGIS.ADF.IMS.Carto.MapView mv
= mf.MapView;
        ESRI.ArcGIS.ADF.IMS.Carto.Layer.FeatureLayer queryLayer;

        queryLayer = (FeatureLayer)mv.Layers.FindByName("SDE.SDE.行政分区");
        Filter queryFilter 
= new Filter();
        
string strSQL = "objectid='1''";
        queryFilter.WhereExpression 
= strSQL;
        QueryParameters queryParams 
= new QueryParameters(queryFilter);
        queryFilter.Tolerance 
= 20;
        queryFilter.ToleranceUnits 
= BufferUnits.Meters;
        queryParams.ReturnGeometries 
= true;
        queryParams.ReturnGlobalEnvelope 
= true;
        queryLayer.Visible 
= true;
        FeatureTable ft 
= queryLayer.Query(queryParams);
        
//缩放至查询结果的区域
        if (ft.Rows.Count != 0)
        
{
            ESRI.ArcGIS.ADF.IMS.Geometry.Geometry featureGeom 
= (ESRI.ArcGIS.ADF.IMS.Geometry.Geometry)ft.Rows[0]["#SHAPE#"];
            ESRI.ArcGIS.ADF.Web.Geometry.Geometry adfGEom 
= ESRI.ArcGIS.ADF.Web.DataSources.IMS.Converter.ToADFGeometry(featureGeom);
            ESRI.ArcGIS.ADF.Web.Geometry.Envelope adfEnv 
= ESRI.ArcGIS.ADF.Web.Geometry.Envelope.GetMinimumEnclosingEnvelope(adfGEom);
            Map1.Extent 
= adfEnv;
        }



        ESRI.ArcGIS.ADF.IMS.Display.Symbol.FeatureSymbol selSymbol 
= new ESRI.ArcGIS.ADF.IMS.Display.Symbol.SimpleFillSymbol(System.Drawing.Color.Yellow, System.Drawing.Color.Red, PolygonFillType.Solid);
        selSymbol.Transparency 
= 10;
        ESRI.ArcGIS.ADF.IMS.Display.Renderer.ValueMapRenderer selValueMapRenderer 
= new ESRI.ArcGIS.ADF.IMS.Display.Renderer.ValueMapRenderer("", selSymbol, "名称");
        FeatureLayer hilightLayer 
= queryLayer.CreateSelectionLayer(queryFilter, selValueMapRenderer, "hilightlayer");
        hilightLayer.Name 
= "SelectedPARCEL";
        
//将图层添加到mapView中
        if (mv.Layers.FindByName("SelectedPARCEL"== null)
        
{
            mv.Layers.Add(hilightLayer);
        }

        
else
        
{
            mv.ClearSelectionLayers();
            mv.Layers.Add(hilightLayer);
        }


        Map1.Refresh();

posted on 2008-12-05 14:14  于海龙  阅读(525)  评论(0)    收藏  举报

导航