using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace WindowsApplication67 { /**//// /// Form1 的摘要说明。 /// public class Form1 : System.Windows.Forms.Form { private AxMapObjects2.AxMap axMap1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Timer timer1; private System.ComponentModel.IContainer components; public maptips2 tips; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /**//// /// 清理所有正在使用的资源。 /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码 /**//// /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1)); this.axMap1 = new AxMapObjects2.AxMap(); this.textBox1 = new System.Windows.Forms.TextBox(); this.timer1 = new System.Windows.Forms.Timer(this.components); ((System.ComponentModel.ISupportInitialize)(this.axMap1)).BeginInit(); this.SuspendLayout(); // // axMap1 // this.axMap1.Location = new System.Drawing.Point(16, 24); this.axMap1.Name = "axMap1"; this.axMap1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axMap1.OcxState"))); this.axMap1.Size = new System.Drawing.Size(392, 224); this.axMap1.TabIndex = 0; this.axMap1.MouseDownEvent += new AxMapObjects2._DMapEvents_MouseDownEventHandler(this.axMap1_MouseDownEvent); this.axMap1.MouseMoveEvent += new AxMapObjects2._DMapEvents_MouseMoveEventHandler(this.axMap1_MouseMoveEvent); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(168, 64); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(80, 21); this.textBox1.TabIndex = 1; this.textBox1.Text = "textBox1"; // // timer1 // this.timer1.Enabled = true; this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(496, 285); this.Controls.Add(this.textBox1); this.Controls.Add(this.axMap1); this.Name = "Form1"; this.Text = "Form1"; this.Load += new System.EventHandler(this.Form1_Load); ((System.ComponentModel.ISupportInitialize)(this.axMap1)).EndInit(); this.ResumeLayout(false); } #endregion /**//// /// 应用程序的主入口点。 /// [STAThread] static void Main() { Application.Run(new Form1()); } private void Form1_Load(object sender, System.EventArgs e) { MapObjects2.IMoDataConnection dc; MapObjects2.IMoMapLayer layer; dc=new MapObjects2.DataConnectionClass(); dc.Database=@"f:\data\usa"; if (!dc.Connect()) { MessageBox.Show("无法连"); } else { layer=new MapObjects2.MapLayerClass(); layer.GeoDataset=dc.FindGeoDataset("STATES"); axMap1.Layers.Add(layer); tips=new maptips2(); tips.initialize(axMap1,timer1,textBox1); tips.setlay(layer,"STATE_NAME"); } } private void axMap1_MouseDownEvent(object sender, AxMapObjects2._DMapEvents_MouseDownEvent e) { MapObjects2.Rectangle r; r= new MapObjects2.RectangleClass(); r=axMap1.TrackRectangle() ; axMap1.Extent=r; } private void axMap1_MouseMoveEvent(object sender, AxMapObjects2._DMapEvents_MouseMoveEvent e) { this.tips.mousemove(e.x,e.y ); } private void timer1_Tick(object sender, System.EventArgs e) { this.tips.timer(); } } } // 类 using System; using MapObjects2; namespace WindowsApplication67 { /**//// /// maptips2 的摘要说明。 /// public class maptips2 { public maptips2() { // // TODO: 在此处添加构造函数逻辑 // } protected int m_x; protected int m_y; protected int m_lastx; protected int m_lasty; protected AxMapObjects2.AxMap axMap1; protected System.Windows.Forms.Timer m_time; protected System.Windows.Forms.TextBox m_edit; protected MapObjects2.IMoMapLayer m_layer; protected string m_field; protected MapObjects2.Recordset m_recs; public void doseach() { MapObjects2.Point pt; pt=new MapObjects2.PointClass(); pt=axMap1.ToMapPoint(m_x,m_y); if (m_layer.shapeType.ToString()=="23") { m_recs=m_layer.SearchShape(pt,MapObjects2.SearchMethodConstants.moPointInPolygon ,""); } else { m_recs=m_layer.SearchByDistance(pt,axMap1.ToMapDistance(10),""); } } public void initialize(AxMapObjects2.AxMap map,System.Windows.Forms.Timer tmr,System.Windows.Forms.TextBox edit ) { axMap1=map; m_time=tmr; m_edit=edit; m_edit.Visible=false; } public void mousemove(int x,int y) { if ( m_time.Interval==1) { m_x=x; m_y=y; m_time.Interval=100; } else { m_edit.Visible=false; } } public void setlay(MapObjects2.IMoMapLayer layer,string fid) { m_layer=layer; m_field=fid; } public void showtiptext(string text) { m_edit.Text=text; m_edit.Visible=true; m_edit.Left=axMap1.Left+m_x; m_edit.Top =axMap1.Top+m_y+20; } public void timer() { string s; MapObjects2.IMoFields flds; MapObjects2.IMoField fld ; if ((m_x==m_lastx)&&(m_y==m_lasty)) { m_time.Interval=1; doseach(); if(m_recs.EOF ) { m_edit.Visible=false; } else { flds=m_recs.Fields ; fld= flds.Item(m_field); s=fld.Value.ToString(); this.showtiptext(s); } } else { m_lastx=m_x; m_lasty=m_y; } } } }