读书人

c# 地图x5.0 鹰眼

发布时间: 2012-12-29 10:28:09 作者: rapoo

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();
}

读书人网 >行业软件

热点推荐