首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

c# 地图x5.0 鹰眼

2012-12-29 
c# mapx5.0鹰眼各位帮我看下为什么以下代码不行。我想在axMap1中放大后,axMap2中的框能变小,但是现在做出来

c# mapx5.0 鹰眼
           
各位帮我看下为什么以下代码不行。
我想在axMap1中放大后,axMap2中的框能变小,但是现在做出来的axMap2的框不变

 private void axMap1_MapViewChanged(object sender, EventArgs e)
        {
            MapXLib.Feature tempFea;    //声明一个图元,用于鹰眼图中创建的矩形框
            MapXLib.Points tempPoints = new Points();
            MapXLib.Style tempStyle = new Style();
            MapXLib.Point ptMap_1 = new MapXLib.Point();
            MapXLib.Point ptMap_2 = new MapXLib.Point();
            MapXLib.Point ptMap_3 = new MapXLib.Point();
            MapXLib.Point ptMap_4 = new MapXLib.Point();
            MapXLib.Layer m_layer_Eagle;
            MapXLib.Feature m_feature_Eagle;

            //设置矩形框四角坐标为主图边框
            ptMap_1.Set(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMin);
            ptMap_2.Set(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMin);
            ptMap_3.Set(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMax);
            ptMap_4.Set(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMax);
            //添加点到点集
            tempPoints.Add(ptMap_1, 1);
            tempPoints.Add(ptMap_2, 2);
            tempPoints.Add(ptMap_3, 3);
            tempPoints.Add(ptMap_4, 4);

            //以下设置边框样式
            tempStyle.RegionPattern = FillPatternConstants.miPatternNoFill;
            tempStyle.RegionBorderColor = (uint)MapXLib.ColorConstants.miColorBlue;
            tempStyle.RegionBorderWidth = 2;
            //////////////以下创建临时图层/////////////////////////  
            MapXLib.LayerInfo tempLayerInfo = new MapXLib.LayerInfoClass();
            MapXLib.Fields flds = new MapXLib.FieldsClass();
            flds.AddStringField("Name", 100, false);
            tempLayerInfo.Type = MapXLib.LayerInfoTypeConstants.miLayerInfoTypeTemp;
            tempLayerInfo.AddParameter("Name", "Eagle");


            tempLayerInfo.AddParameter("Fields", flds);
            m_layer_Eagle = axMap2.Layers.Add(tempLayerInfo, 1);         //为鹰眼图添加图层
            //////////////以上创建临时图层////////////////////////// 

            //以下在临时图层添加大小为axMapx2的边界的Rectangle对象 
            tempFea = axMap2.FeatureFactory.CreateRegion(tempPoints, tempStyle);//创建矩形框 
            m_feature_Eagle = axMap2.Layers._Item("Eagle").AddFeature(tempFea, new MapXLib.RowValuesClass());  //添加边框到鹰眼图
            tempStyle = null;

            tempFea.Parts._Item(1).RemoveAll();
            tempFea.Parts._Item(1).AddXY(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMin, 1);
            tempFea.Parts._Item(1).AddXY(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMin, 2);
            tempFea.Parts._Item(1).AddXY(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMax, 3);
            tempFea.Parts._Item(1).AddXY(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMax, 4);
            tempFea.Update(tempFea, new MapXLib.RowValuesClass());
        
        }


[解决办法]
这个我以前做过,给你看看我我的代码吧:


————————————————————————————
1.
 /// <summary>
        /// 在鹰眼地图中添加矩形框
        /// </summary>
        private void DrawRect()  //在鹰眼地图中添加矩形框函数
        {
                if (MapEye.Layers._Item("Eyelay").AllFeatures.Count == 0)
                {
                    MapXLib.Feature fea = new MapXLib.FeatureClass();
                    MapXLib.Style sty = new MapXLib.StyleClass();
                    try
                    {
                      
                        sty.RegionPattern = MapXLib.FillPatternConstants.miPatternNoFill;
                        sty.RegionColor = 155;


                        sty.RegionBorderWidth = 1;
                        MapXLib.Points pts = new MapXLib.PointsClass();
                        pts.AddXY(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMin, 1);
                        pts.AddXY(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMin, 2);
                        pts.AddXY(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMax, 3);
                        pts.AddXY(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMax, 4);
                        fea = MapEye.FeatureFactory.CreateRegion(pts,sty);
                        FeaEye = MapEye.Layers._Item("Eyelay").AddFeature(fea,new MapXLib.RowValuesClass());
                        FeaEye.Update(FeaEye,new MapXLib.RowValuesClass());
                    }
                    catch (Exception ea)
                    { MessageBox.Show(ea.Message.ToString() + "\n没有矩形图元"); }
                }
                else
                {
                    try
                    {
                        FeaEye.Parts._Item(1).RemoveAll();
                        FeaEye.Parts._Item(1).AddXY(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMin, 1);
                        FeaEye.Parts._Item(1).AddXY(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMin, 2);
                        FeaEye.Parts._Item(1).AddXY(axMap1.CtlBounds.XMax, axMap1.CtlBounds.YMax, 3);
                        FeaEye.Parts._Item(1).AddXY(axMap1.CtlBounds.XMin, axMap1.CtlBounds.YMax, 4);


                        FeaEye.Update(FeaEye, new MapXLib.RowValuesClass());
                    }
                    catch (Exception en)
                    { MessageBox.Show(en.Message.ToString() + "\n更新图元"); }
                }

            }
——————————————————————————————————————————————————
2.
        private void Map_Emulate_Load(object sender, EventArgs e) //窗口初始化
        {

            //鹰眼
            
            try        //创建临时图层
            {
                MapXLib.LayerInfo lay=new MapXLib.LayerInfoClass();
                MapXLib.Fields fld = new MapXLib.FieldsClass();
                fld.AddStringField("ID", 20, false);
                fld.AddStringField("Name", 100, false);
                lay.Type = MapXLib.LayerInfoTypeConstants.miLayerInfoTypeTemp;
                lay.AddParameter("Name", "Eyelay");
                lay.AddParameter("Fields", fld);
                LayEye= MapEye.Layers.Add(lay, 1);               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }
            //在鹰眼地图中添加矩形框
             DrawRect();
————————————————————————————————————————————————
3.当视图改变时,鹰眼相应改变实现代码
        private void MapEye_MouseDownEvent(object sender, AxMapXLib.CMapXEvents_MouseDownEvent e)// 鹰眼。绑定主图的中兴坐标
        {
            MapEye.MousePointer = MapXLib.CursorConstants.miPanCursor;
            if (e.button == 1)


            {
                MapEye.MousePointer = MapXLib.CursorConstants.miPanCursor;
                eyemove = true;
                double mapx = 0.0;
                double mapy = 0.0;
                MapEye.ConvertCoord(ref e.x, ref  e.y, ref  mapx, ref  mapy, MapXLib.ConversionConstants.miScreenToMap);
                axMap1.CenterX = mapx;
                axMap1.CenterY = mapy;
            }
        }

        private void axMap1_SizeChanged(object sender, EventArgs e) //主视图改变时,重绘鹰眼地图中的矩形框
        {
            DrawRect();
        }

        private void axMap1_MapViewChanged(object sender, EventArgs e)//地图变化时,重绘鹰眼地图中的矩形框
        {
            DrawRect();
        }

热点排行