1、C#+ARCGIS ENGINE开发查找地图元素并高亮显示代码1 (2008-12-13 13:02:12) 转载 标签: 杂谈 分类: 程序源代码 这是我帮同学做的一个简单的上机作业,本来是想做查找最短路径和查找地图元素(高亮显示)两个功能的,只是查找最短路径的代码没有填进去,如果哪位朋友需要的话,可以发邮件给我啊(wang_cuntao@)~~ 下面是查找地图元素(高亮显示)的主要代码: //frmMain.cs // Copyright 2006 ESRI // // All rights reserved under the copyr
2、ight laws of the United States // and applicable international laws, treaties, and conventions. // // You may freely redistribute and use this sample code, with or // without modification, provided you include the original copyright // notice and use restrictions. // // See use restrictions a
3、t /arcgis/developerkit/userestrictions. using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using ESRI.ArcGIS.Carto; using ESRI.ArcGIS.Controls; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.SystemUI;
4、using ESRI.ArcGIS.NetworkAnalyst;
// This is the main form of the application.
namespace NAEngine
{
/// 5、ary>
public IMapControl2 pMapControl;
private System.ComponentModel.Container components = null;
private System.Windows.Forms.Splitter splitter1;
private System.Windows.Forms.ComboBox cmbLayers;
// Context menu objects for NAWindow's context menu
private System 6、Windows.Forms.ContextMenu contextMenu1;
private System.Windows.Forms.MenuItem miLoadLocations;
private System.Windows.Forms.MenuItem miClearLocations;
// ArcGIS Controls on the form
private ESRI.ArcGIS.Controls.AxMapControl axMapControl1;
private ESRI.ArcGIS.Controls.AxLicenseControl 7、 axLicenseControl1;
private ESRI.ArcGIS.Controls.AxToolbarControl axToolbarControl1;
private ESRI.ArcGIS.Controls.AxTOCControl axTOCControl1;
// Listen for context menu on NAWindow
private IEngineNAWindowEventsEx_OnContextMenuEventHandler m_onContextMenu;
// Reference to Network Analy 8、st Environment
private IEngineNetworkAnalystEnvironment m_naEnv;
// Reference to NAWindow. Need to hold on to reference for events to work.
private IEngineNAWindow m_naWindow;
private MenuStrip menuStrip1;
private ToolStripMenuItem oPENToolStripMenuItem;
pr 9、ivate Label label1;
private Label label2;
// Menu for our commands on the TOC context menu
private IToolbarMenu m_menuLayer;
public frmMain()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
/// 10、ean up any resources being used.
///
11、
#region Windows Form Designer generated code
///
12、ger resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain)); this.axMapControl1 = new ESRI.ArcGIS.Controls.AxMapControl(); this.axLicenseControl1 = new ESRI.ArcGIS.Controls.AxLicenseControl(); this.axToolbarControl1 = new ESRI.ArcGIS.Con
13、trols.AxToolbarControl(); this.splitter1 = new System.Windows.Forms.Splitter(); this.axTOCControl1 = new ESRI.ArcGIS.Controls.AxTOCControl(); this.contextMenu1 = new System.Windows.Forms.ContextMenu(); this.miLoadLocations = new System.Windows.Form
14、s.MenuItem(); this.miClearLocations = new System.Windows.Forms.MenuItem(); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.oPENToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.label1 = new System.Windows.Forms.Lab
15、el(); this.label2 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.axMapControl1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.axLicenseControl1)).BeginInit(); ((System.ComponentModel.ISupportIn
16、itialize)(this.axToolbarControl1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.axTOCControl1)).BeginInit(); this.menuStrip1.SuspendLayout(); this.SuspendLayout(); // // axMapControl1 // this.
17、axMapControl1.Dock = System.Windows.Forms.DockStyle.Fill; this.axMapControl1.Location = new System.Drawing.Point(246, 52); this.axMapControl1.Name = "axMapControl1"; this.axMapControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axMapCo
18、ntrol1.OcxState"))); this.axMapControl1.Size = new System.Drawing.Size(466, 448); this.axMapControl1.TabIndex = 2; // // axLicenseControl1 // this.axLicenseControl1.Enabled = true; this.axLicenseControl1.Locat
19、ion = new System.Drawing.Point(797, 0); this.axLicenseControl1.Name = "axLicenseControl1"; this.axLicenseControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axLicenseControl1.OcxState"))); this.axLicenseControl1.Size = new System.Drawi
20、ng.Size(32, 32); this.axLicenseControl1.TabIndex = 1; // // axToolbarControl1 // this.axToolbarControl1.Dock = System.Windows.Forms.DockStyle.Top; this.axToolbarControl1.Location = new System.Drawing.Point(0, 24);
21、 this.axToolbarControl1.Name = "axToolbarControl1"; this.axToolbarControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axToolbarControl1.OcxState"))); this.axToolbarControl1.Size = new System.Drawing.Size(712, 28); this.axToolbarCon
22、trol1.TabIndex = 0; this.axToolbarControl1.OnMouseDown += new ESRI.ArcGIS.Controls.IToolbarControlEvents_Ax_OnMouseDownEventHandler(this.axToolbarControl1_OnMouseDown); // // splitter1 // this.splitter1.Location = new System.Drawing.Po
23、int(243, 52); this.splitter1.Name = "splitter1"; this.splitter1.Size = new System.Drawing.Size(3, 448); this.splitter1.TabIndex = 4; this.splitter1.TabStop = false; // // axTOCControl1 // this.axT
24、OCControl1.Dock = System.Windows.Forms.DockStyle.Left; this.axTOCControl1.Location = new System.Drawing.Point(0, 52); this.axTOCControl1.Name = "axTOCControl1"; this.axTOCControl1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axTOCControl
25、1.OcxState"))); this.axTOCControl1.Size = new System.Drawing.Size(243, 448); this.axTOCControl1.TabIndex = 1; this.axTOCControl1.OnMouseDown += new ESRI.ArcGIS.Controls.ITOCControlEvents_Ax_OnMouseDownEventHandler(this.axTOCControl1_OnMouseDown); /
26、/ // contextMenu1 // this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.miLoadLocations, this.miClearLocations}); // // miLoadLocations // this.miLoadLoca
27、tions.Index = 0; this.miLoadLocations.Text = "Load Locations..."; this.miLoadLocations.Click += new System.EventHandler(this.miLoadLocations_Click); // // miClearLocations // this.miClearLocations.Index = 1; t
28、his.miClearLocations.Text = "Clear Locations"; this.miClearLocations.Click += new System.EventHandler(this.miClearLocations_Click); // // menuStrip1 // this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
29、 this.oPENToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(712, 24); this.menuStrip1.TabIndex = 20; this.menuStrip1.T
30、ext = "menuStrip1"; this.menuStrip1.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.menuStrip1_ItemClicked); // // oPENToolStripMenuItem // this.oPENToolStripMenuItem.Name = "oPENToolStripMenuItem";
31、 this.oPENToolStripMenuItem.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.oPENToolStripMenuItem.Size = new System.Drawing.Size(65, 20); this.oPENToolStripMenuItem.Tag = ""; this.oPENToolStripMenuItem.Text = "查找地点"; this.oPENToolStr
32、ipMenuItem.Click += new System.EventHandler(this.oPENToolStripMenuItem_Click); // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(134, 7); this.label1.Name = "label1";
33、 this.label1.Size = new System.Drawing.Size(0, 12); this.label1.TabIndex = 6; this.label1.Click += new System.EventHandler(this.label1_Click); // // label2 // this.label2.AutoSize = true; this.label2.Location
34、 new System.Drawing.Point(68, 6); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(293, 12); this.label2.TabIndex = 21; this.label2.Text = "(点击查找地图功能之前,请确定已经打开一张地图~)"; // // frmMain //
35、 this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(712, 500); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Controls.Add(this.axLicenseControl1); this.
36、Controls.Add(this.axMapControl1); this.Controls.Add(this.splitter1); this.Controls.Add(this.axTOCControl1); this.Controls.Add(this.axToolbarControl1); this.Controls.Add(this.menuStrip1); this.Location = new System.Drawing.Point(10, 0);
37、 this.MainMenuStrip = this.menuStrip1; this.Name = "frmMain"; this.Text = "GIS(作者:涛涛)"; this.Load += new System.EventHandler(this.frmMain_Load); ((System.ComponentModel.ISupportInitialize)(this.axMapControl1)).EndInit(); (
38、System.ComponentModel.ISupportInitialize)(this.axLicenseControl1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.axToolbarControl1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.axTOCControl1)).EndInit(); this.menuStrip1.ResumeLayo
39、ut(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
///
40、w frmMain()); } private void frmMain_Load(object sender, System.EventArgs e) { pMapControl = (IMapControl2)axMapControl1.Object; // Add commands to the NALayer context menu m_menuLayer = new ToolbarMenuClass(); m_menuLayer.AddItem(new LoadLocations(), -1, 0, false,
41、esriCommandStyles.esriCommandStyleTextOnly); m_menuLayer.AddItem(new RemoveLayer(), -1, 1, false, esriCommandStyles.esriCommandStyleTextOnly); m_menuLayer.AddItem(new ClearAnalysisLayer(), -1, 2, true, esriCommandStyles.esriCommandStyleTextOnly); m_menuLayer.AddItem(new NALayerProperties
42、), -1, 3, true, esriCommandStyles.esriCommandStyleTextOnly); m_menuLayer.SetHook(axMapControl1); // Add command for Network Analyst env properties to "Network Analyst" dropdown menu IToolbarItem item = axToolbarControl1.GetItem(2); item.Menu.AddItem(new NAProperties(), -1, 1, true,
43、esriCommandStyles.esriCommandStyleTextOnly); // Initialize naEnv variables m_naEnv = new EngineNetworkAnalystEnvironmentClass(); m_naEnv.ZoomToResultAfterSolve = false; m_naEnv.ShowAnalysisMessagesAfterSolve = (int)(esriEngineNAMessageType.esriEngineNAMessageTypeInformative | esriEng
44、ineNAMessageType.esriEngineNAMessageTypeWarning); // Explicitly setup buddy control and initialize NA extension // so we can get to NAWindow to listen to window events // This is necessary the various controls are not yet setup and they // need to be in order to get the NAWindow's ev
45、ents. axToolbarControl1.SetBuddyControl(axMapControl1); IExtension ext = m_naEnv as IExtension; object obj = axToolbarControl1.Object; ext.Startup(ref obj); m_naWindow = m_naEnv.NAWindow; m_onContextMenu = new IEngineNAWindowEventsEx_OnContextMenuEventHandler(OnContextMenu);
46、 ((IEngineNAWindowEventsEx_Event)m_naWindow).OnContextMenu += m_onContextMenu; } // Show the TOC context menu when an NALayer is right-clicked on private void axTOCControl1_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvent e) { if (e.button != 2)
47、return; esriTOCControlItem item = esriTOCControlItem.esriTOCControlItemNone; IBasicMap map = null; ILayer layer = null; object other = null; object index = null; //Determine what kind of item has been clicked on axTOCControl1.HitTest(e.x, e.y, ref item, ref map, ref layer
48、 ref other, ref index); // Only implemented a context menu for NALayers. Exit if the layer is anything else. if ((layer as INALayer) == null) return; axTOCControl1.SelectItem(layer); // Set the layer into the CustomProperty. // This is used by the other commands to know wh
49、at layer was right-clicked on // in the table of contents. axMapControl1.CustomProperty = layer; //Popup the correct context menu and update the TOC when it's done. if (item == esriTOCControlItem.esriTOCControlItemLayer) { m_menuLayer.PopupMenu(e.x,e.y,axTOCControl1.hWnd); ITOCControl toc = axTOCControl1.Object as ITOCControl; toc.Update(); } } public bool OnContextMenu(int x, int y) { System.Drawing.Point pt = this.PointToClient(System.Windows.Forms.Cursor.Position); contextMenu1.Show(this, pt); return true; } private
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818