基于C#的GIS校园电子地图实现
2009-02-27 08:18:28 来源:WEB开发网2.4 系统主要功能设计
2.4.1 电子地图基本功能的实现
电子地图基本功能包括放大、缩小、漫游等,MapX控件已经集成了这些工具,因此编程时C#只需要简单调用这些工具即可,具体代码如下:
private void toolStripButton1_Click(object sender, EventArgs e)
{
axMap2.CurrentTool = MapXLib.ToolConstants.miZoomInTool; //放大工具
}
其它工具调用类似,这里不再赘述。
2.4.2 鹰眼图实现
鹰眼图是GIS系统的一个基本功能,它是为了方便拥护浏览地图而设计的,其作用是显示主图中所显示的地图在整副地图中的位置。用户还可以在鹰眼图中鼠标单击任意区域,则在主图中同步显示该区域,从而实现快速浏览。
实现鹰眼图的思路为:首先在窗体上放两个MapX控件,分别为主图和鹰眼图,然后在鹰眼图上创建一个图层,并在其上添加一个矩形框,该矩形的大小随主图边界而变化。
C#实现鹰眼图的代码如下:
private void axMap2_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();
//设置矩形框四角坐标为主图边框
ptMap_1.Set(axMap2.CtlBounds.XMin, axMap2.CtlBounds.YMin);
ptMap_2.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMin);
ptMap_3.Set(axMap2.CtlBounds.XMax, axMap2.CtlBounds.YMax);
ptMap_4.Set(axMap2.CtlBounds.XMin, axMap2.CtlBounds.YMax);
//添加点到点集
tempPoints.Add(ptMap_1, 1);
tempPoints.Add(ptMap_2, 2);
tempPoints.Add(ptMap_3, 3);
tempPoints.Add(ptMap_4, 4);
//////////////以下创建临时图层/////////////////////////
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 = axMap1.Layers.Add(tempLayerInfo, 1); //为鹰眼图添加图层
//////////////以上创建临时图层//////////////////////////
//以下设置边框样式
tempStyle.RegionPattern = FillPatternConstants.miPatternNoFill;
tempStyle.RegionBorderColor = (uint)MapXLib.ColorConstants.miColorBlue;
tempStyle.RegionBorderWidth = 2;
//以下在临时图层添加大小为axMapx2的边界的Rectangle对象
try
{
tempFea = axMap1.FeatureFactory.CreateRegion(tempPoints, tempStyle);//创建矩形框
m_feature_Eagle = axMap1.Layers._Item("Eagle").AddFeature(tempFea,
new MapXLib.RowValuesClass()); //添加边框到鹰眼图
}
catch (System.Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››基于JavaScript和CSS的Web图表框架横向对比
更多精彩
赞助商链接