复制到浮动层,强调显示某个(多个)区域

        //强调显示某个区域
        public void EmphasisRegion(string ShowType,string ShowKey,Map map)
        
{
            MapInfo.Geometry.DRect bd
=new DRect(0,0,0,0);
            (_tempTable 
as IFeatureCollection).Clear();  //清空
            foreach(Feature ftr in MapInfo.Engine.Session.Current.Catalog.GetTable(ShowType) )
            
{
                
if(ftr["f_name"].ToString()==ShowKey)
                
{
                    
//Feature ftr =MapInfo.Engine.Session.Current.Catalog.SearchForFeature(ShowType,MapInfo.Data.SearchInfoFactory.SearchWhere("f_name='"+ShowKey+"'") );
                    
//if(ftr==null)return;

                    
//样式
                    SimpleInterior si=new SimpleInterior(2,System.Drawing.Color.BurlyWood);
                    SimpleLineStyle sl
=new SimpleLineStyle(MapInfo.Styles.PatternStyle.FDiag  ) ;
                    sl.Color
=System.Drawing.Color.SaddleBrown ;
                    AreaStyle ars
=new AreaStyle(sl,si);    
                    
if(ftr.Geometry.GetType().ToString()=="MapInfo.Geometry.MultiPolygon")
                    
{
                        
                        Feature f
=(Feature)ftr.Clone();
                        f.Style
=ars;
                        _tempTable.InsertFeature(f);
                        
if(bd.x1==0&&bd.y1==0&&bd.x2==0&&bd.y2==0)
                            bd
=new DRect(f.Geometry.Bounds.x1,f.Geometry.Bounds.y1,f.Geometry.Bounds.x2,f.Geometry.Bounds.y2);
                        
else
                            bd.MergeRects(f.Geometry.Bounds);
                    }

                    
                    
                }

                map.SetView(bd,ftr.Geometry.CoordSys);
            }

        }

posted @ 2005-10-25 17:33  jetz  阅读(785)  评论(0编辑  收藏  举报