|
阅读:1799回复:5
MapObjects2.2 在C#中的应用(动态加载地图)
<P align=left>本篇文章实现了动态加载地图的功能,废话少说,功能实现见代码。<p></p></P>
<P align=left> <p></p></P> <P align=left> <p></p></P> <P align=left>加载过程代码:<p></p></P> <P align=left> <p></p></P> <P align=left>using System;<p></p></P> <P align=left>using System.Drawing;<p></p></P> <P align=left>using System.Collections;<p></p></P> <P align=left>using System.ComponentModel;<p></p></P> <P align=left>using System.Windows.Forms;<p></p></P> <P align=left>using System.Data;<p></p></P> <P align=left> <p></p></P> <P align=left>namespace LoadMap<p></p></P> <P align=left>{<p></p></P> <P align=left> /// <summary><p></p></P> <P align=left> /// Form1 的摘要说明。<p></p></P> <P align=left> /// </summary><p></p></P> <P align=left> public class Form1 : System.Windows.Forms.Form<p></p></P> <P align=left> {<p></p></P> <P align=left> private AxMapObjects2.AxMap axMap1;<p></p></P> <P align=left> /// <summary><p></p></P> <P align=left> /// 必需的设计器变量。<p></p></P> <P align=left> /// </summary><p></p></P> <P align=left> private System.ComponentModel.Container components = null;<p></p></P> <P align=left> <p></p></P> <P align=left> public Form1()<p></p></P> <P align=left> {<p></p></P> <P align=left> //<p></p></P> <P align=left> // Windows 窗体设计器支持所必需的<p></p></P> <P align=left> //<p></p></P> <P align=left> InitializeComponent();<p></p></P> <P align=left> <p></p></P> <P align=left> //<p></p></P> <P align=left> // TOD 在 InitializeComponent 调用后添加任何构造函数代码<p></p></P> <P align=left> //<p></p></P> <P align=left> }<p></p></P> <P align=left> <p></p></P> <P align=left> /// <summary><p></p></P> <P align=left> /// 清理所有正在使用的资源。<p></p></P> <P align=left> /// </summary><p></p></P> <P align=left> protected override void Dispose( bool disposing )<p></p></P> <P align=left> {<p></p></P> <P align=left> if( disposing )<p></p></P> <P align=left> {<p></p></P> <P align=left> if (components != null) <p></p></P> <P align=left> {<p></p></P> <P align=left> components.Dispose();<p></p></P> <P align=left> }<p></p></P> <P align=left> }<p></p></P> <P align=left> base.Dispose( disposing );<p></p></P> <P align=left> }<p></p></P> <P align=left> <p></p></P> <P align=left> #region Windows 窗体设计器生成的代码<p></p></P> <P align=left> /// <summary><p></p></P> <P align=left> /// 设计器支持所需的方法 - 不要使用代码编辑器修改<p></p></P> <P align=left> /// 此方法的内容。<p></p></P> <P align=left> /// </summary><p></p></P> <P align=left> private void InitializeComponent()<p></p></P> <P align=left> {<p></p></P> <P align=left> System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));<p></p></P> <P align=left> this.axMap1 = new AxMapObjects2.AxMap();<p></p></P> <P align=left> ((System.ComponentModel.ISupportInitialize)(this.axMap1)).BeginInit();<p></p></P> <P align=left> this.SuspendLayout();<p></p></P> <P align=left> // <p></p></P> <P align=left> // axMap1<p></p></P> <P align=left> // <p></p></P> <P align=left> this.axMap1.Dock = System.Windows.Forms.DockStyle.Fill;<p></p></P> <P align=left> this.axMap1.Location = new System.Drawing.Point(0, 0);<p></p></P> <P align=left> this.axMap1.Name = "axMap1";<p></p></P> <P align=left> this.axMap1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axMap1.OcxState")));<p></p></P> <P align=left> this.axMap1.Size = new System.Drawing.Size(600, 357);<p></p></P> <P align=left> this.axMap1.TabIndex = 0;<p></p></P> <P align=left> // <p></p></P> <P align=left> // Form1<p></p></P> <P align=left> // <p></p></P> <P align=left> this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);<p></p></P> <P align=left> this.ClientSize = new System.Drawing.Size(600, 357);<p></p></P> <P align=left> this.Controls.Add(this.axMap1);<p></p></P> <P align=left> this.Name = "Form1";<p></p></P> <P align=left> this.Text = "Form1";<p></p></P> <P align=left> this.Load += new System.EventHandler(this.Form1_Load);<p></p></P> <P align=left> ((System.ComponentModel.ISupportInitialize)(this.axMap1)).EndInit();<p></p></P> <P align=left> this.ResumeLayout(false);<p></p></P> <P align=left> <p></p></P> <P align=left> }<p></p></P> <P align=left> #endregion<p></p></P> <P align=left> <p></p></P> <P align=left> /// <summary><p></p></P> <P align=left> /// 应用程序的主入口点。<p></p></P> <P align=left> /// </summary><p></p></P> <P align=left> [STAThread]<p></p></P> <P align=left> static void Main() <p></p></P> <P align=left> {<p></p></P> <P align=left> Application.Run(new Form1());<p></p></P> <P align=left> }<p></p></P> <P align=left> <p></p></P> <P align=left> private void Form1_Load(object sender, System.EventArgs e)<p></p></P> <P align=left> {<p></p></P> <P align=left> //定义数据连接<p></p></P> <P align=left> MapObjects2.DataConnection dc = new MapObjects2.DataConnectionClass();<p></p></P> <P align=left> //定义图层<p></p></P> <P align=left> MapObjects2.MapLayer layer = new MapObjects2.MapLayerClass();<p></p></P> <P align=left> //我的地图文件都存在了"G:\\LoadMap\\bin\\Debug\\"目录下,请替换为自己的地图目录<p></p></P> <P align=left> dc.Database = "G:\\LoadMap\\bin\\Debug\\";<p></p></P> <P align=left> //连接不成功就退出<p></p></P> <P align=left> if(!dc.Connect())<p></p></P> <P align=left> {<p></p></P> <P align=left> MessageBox.Show("在指定的文件夹下没找到图层数据文件");<p></p></P> <P align=left> Application.Exit();<p></p></P> <P align=left> }<p></p></P> <P align=left> else//连接成功了就加载地图<p></p></P> <P align=left> {<p></p></P> <P align=left> /*<p></p></P> <P align=left> * 地图加载顺序一般是面、线、点,先加载的在地图的最下<p></p></P> <P align=left> */<p></p></P> <P align=left> //加载图层States,<p></p></P> <P align=left> layer.GeoDataset = dc.FindGeoDataset("States");<p></p></P> <P align=left> axMap1.Layers.Add(layer);<p></p></P> <P align=left> //加载图层Rivers,<p></p></P> <P align=left> layer.GeoDataset = dc.FindGeoDataset("Rivers");<p></p></P> <P align=left> axMap1.Layers.Add(layer);<p></p></P> <P align=left> //加载其它图层...<p></p></P> <P align=left> }<p></p></P> <P align=left> //必须进行刷新后才能显示<p></p></P> <P align=left> axMap1.Refresh();<p></p></P> <P align=left> }<p></p></P> <P align=left> }<p></p></P> <P align=left>}<p></p></P> |
|
|
|
1楼#
发布于:2006-08-14 15:43
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em03.gif" /><img src="images/post/smile/dvbbs/em05.gif" />
|
|
|
2楼#
发布于:2006-03-03 23:03
<img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em05.gif" />
|
|
|
3楼#
发布于:2004-10-04 23:07
好像没有实现动态加载图层!!努力!!
|
|
|
|
4楼#
发布于:2004-09-30 15:16
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
|
|
|
5楼#
发布于:2004-09-30 13:02
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
|
|
|