📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Hotgis.eHotGIS;
using System.Runtime.InteropServices;
namespace TopoTest
{
public partial class Form1 : Form
{
int p1 = -1;
int p2 = -1;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
eMap1.Open(@"\program files\topotest\map\topo.map");
eMap1.ViewEntire();
eMap1.ReDraw();
eMap1.Invalidate();
eLayer lyr = eMap1.GetLayerAt(0);
eStyle highlightStyle = new eStyle();
highlightStyle = lyr.HighlightStyle;
highlightStyle.bmpIndex = 5;
highlightStyle.bmpOffsetX = 8;
highlightStyle.bmpOffsetY = 8;
lyr.HighlightStyle = highlightStyle;
lyr = eMap1.GetLayerAt(1);
highlightStyle = lyr.HighlightStyle;
highlightStyle.penWidth = 3;
highlightStyle.penWidth2 = 5;
highlightStyle.penColor = Utilities.ToWin32(Color.Yellow);
highlightStyle.penColor2 = Utilities.ToWin32(Color.Red);
lyr.HighlightStyle = highlightStyle;
}
private void eMap1_MouseDown(object sender, MouseEventArgs e)
{
if(toolBar1.Buttons[4].Pushed)
{
// 起点
// 拓扑边图层设置成不可选择
eLayer lyr = eMap1.GetLayerAt(1);
lyr.IsSelectable = false;
ePoint2D dp = new ePoint2D();
dp.x = e.X;
dp.y = e.Y;
ePoint2D mp = new ePoint2D();
eMap1.PixelToGeo(ref dp,ref mp);
ePoint sp = new ePoint(e.X, e.Y);
int ret = eMap1.QueryByPoint(ref sp, 8);
if (eMap1.GetSelection().Count == 1)
{
eResultSet rs = eMap1.GetSelection().GetAt(0);
if (rs.IsHasNext)
{
//设置风格
eStyle style = new eStyle();
style.bmpIndex = 10;
style.bmpOffsetX = 8;
style.bmpOffsetY = 8;
style.bmpTransColor = Utilities.ToWin32(Color.FromArgb(253, 253, 253));
style.isTransBmp = 0;
eGeometry geom = new eGeometry(eMap1);
geom.PointCount = 1;
ePoint2D pt = new ePoint2D();
pt = rs.GetGeometry().GetPointAt(0);
geom.SetPointAt(0, pt);
p1 = rs.GetInteger(0);
eGeoEvent ge = eMap1.GetTrackingLayer().GetByTag("TOPO_S");
if (ge == null)
{
//添加一个点地位到eTrackingLayer层
eMap1.GetTrackingLayer().AddEvent(geom, eGeoEvent.GeoType.Point, style, "TOPO_S");
eMap1.GetTrackingLayer().GetByTag("TOPO_S").Text = "起点";
eMap1.GetTrackingLayer().GetByTag("TOPO_S").ThemeLabel.IsVisible = true;
eMap1.GetTrackingLayer().GetByTag("TOPO_S").ThemeLabel.VJust = eThemeLabel.VertJust.VBottom;
eMap1.GetTrackingLayer().IsVisible = true;
}
else
{
ePoint2D gp = new ePoint2D();
eMap1.PixelToGeo(ref dp, ref gp);
eMap1.GetTrackingLayer().GetByTag("TOPO_S").MoveTo(pt.x, pt.y);
}
}
}
}
else if (toolBar1.Buttons[5].Pushed)
{
// 拓扑边图层设置成不可选择
eLayer lyr = eMap1.GetLayerAt(1);
lyr.IsSelectable = false;
ePoint2D dp = new ePoint2D();
dp.x = e.X;
dp.y = e.Y;
ePoint2D mp = new ePoint2D();
eMap1.PixelToGeo(ref dp, ref mp);
ePoint sp = new ePoint(e.X, e.Y);
int ret = eMap1.QueryByPoint(ref sp, 8);
if (eMap1.GetSelection().Count == 1)
{
eResultSet rs = eMap1.GetSelection().GetAt(0);
if (rs.IsHasNext)
{
//设置风格
eStyle style = new eStyle();
style.bmpIndex = 12;
style.bmpOffsetX = 8;
style.bmpOffsetY = 8;
style.bmpTransColor = Utilities.ToWin32(Color.FromArgb(253, 253, 253));
style.isTransBmp = 0;
eGeometry geom = new eGeometry(eMap1);
geom.PointCount = 1;
ePoint2D pt = new ePoint2D();
pt = rs.GetGeometry().GetPointAt(0);
geom.SetPointAt(0, pt);
p2 = rs.GetInteger(0);
eGeoEvent ge = eMap1.GetTrackingLayer().GetByTag("TOPO_E");
if (ge == null)
{
//添加一个点地位到eTrackingLayer层
eMap1.GetTrackingLayer().AddEvent(geom, eGeoEvent.GeoType.Point, style, "TOPO_E");
eMap1.GetTrackingLayer().GetByTag("TOPO_E").Text = "终点";
eMap1.GetTrackingLayer().GetByTag("TOPO_E").ThemeLabel.IsVisible = true;
eMap1.GetTrackingLayer().GetByTag("TOPO_E").ThemeLabel.VJust = eThemeLabel.VertJust.VBottom;
eMap1.GetTrackingLayer().IsVisible = true;
}
else
{
ePoint2D gp = new ePoint2D();
eMap1.PixelToGeo(ref dp, ref gp);
eMap1.GetTrackingLayer().GetByTag("TOPO_E").MoveTo(pt.x, pt.y);
}
}
}
}
eMap1.Invalidate();
}
private void menuItem1_Click(object sender, EventArgs e)
{
}
private void menuItem4_Click(object sender, EventArgs e)
{
eMap1.SetTool(eMap.ToolType.ZoomIn);
}
private void menuItem5_Click(object sender, EventArgs e)
{
eMap1.SetTool(eMap.ToolType.ZoomOut);
}
private void menuItem6_Click(object sender, EventArgs e)
{
eMap1.SetTool(eMap.ToolType.Pan);
}
private void menuItem7_Click(object sender, EventArgs e)
{
eMap1.SetTool(eMap.ToolType.PointSel);
}
private void eMap1_OnGeometrySelected(int count)
{
eMap1.Invalidate();
}
private void menuItem8_Click(object sender, EventArgs e)
{
eMap1.SetTool(eMap.ToolType.None);
}
private void menuItem2_Click(object sender, EventArgs e)
{
}
private void menuItem9_Click(object sender, EventArgs e)
{
eMap1.GetSelection().Clear();
eTopologyManager topoMan = new eTopologyManager();
bool b = topoMan.Open(@"\program files\topotest\topoedge.bin");
if(b)
{
double d = 0;
string ret = topoMan.MinPathAnalyse(p1, p2,ref d);
MessageBox.Show(d.ToString());
string[] ids = ret.Split('|');
eRect rt = new eRect();
rt.left = 0; rt.top = 0; rt.right = 0; rt.bottom = 0;
eResultSet rs = eMap1.GetLayerAt(1).QueryWithBounds(rt);
rs.Clear();
for (int i = 0; i < ids.Length - 1; i++)
{
rs.Add(Int32.Parse(ids[i])-1);
}
eMap1.GetSelection().Add(rs);
eMap1.Invalidate();
}
}
private void toolBar1_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
{
switch (e.Button.ImageIndex)
{
case 0:
eMap1.SetTool(eMap.ToolType.ZoomIn);
RefreshToolBar(0);
break;
case 1:
eMap1.SetTool(eMap.ToolType.ZoomOut);
RefreshToolBar(1);
break;
case 2:
eMap1.SetTool(eMap.ToolType.Pan);
RefreshToolBar(2);
break;
case 3:
eMap1.SetTool(eMap.ToolType.PointSel);
RefreshToolBar(3);
break;
case 4:
eMap1.SetTool(eMap.ToolType.None);
RefreshToolBar(4);
break;
case 5:
eMap1.SetTool(eMap.ToolType.None);
RefreshToolBar(5);
break;
case 6:
menuItem9_Click(null, null);
break;
}
}
private void RefreshToolBar(int index)
{
for(int i=0;i<6;i++)
{
toolBar1.Buttons[i].Pushed = false;
}
toolBar1.Buttons[index].Pushed = true;
}
private void menuItem10_Click(object sender, EventArgs e)
{
eMap1.ViewEntire();
eMap1.ReDraw();
eMap1.Invalidate();
}
private void menuItem12_Click(object sender, EventArgs e)
{
//测试根据经纬度坐标查询
eLayer lyr = eMap1.GetLayerAt(0);
ePoint2D pt = new ePoint2D(116.46607, 39.99292);
eResultSet rs = lyr.QueryByPoint(pt, 0.0026);
eMap1.GetSelection().Add(rs);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -