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

时间:2022-04-23
本文章向大家介绍复制到浮动层,强调显示某个(多个)区域,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
//强调显示某个区域
        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);
            }
        }