62,243
社区成员




try
{
MapInfo.Mapping.Map myMap = GetMapObj();//获得地图
if (myMap == null)
{
return;
}
//获得地图坐标系
CoordSys coordSys = myMap.GetDisplayCoordSys();
//创建临时表
MapInfo.Data.Table temptable = mapXCreateTable(coordSys, "temptable", "clgj");
//四个文本框存2个坐标点的x、y值
if (TextBox1.Text == "" || TextBox2.Text == "" || TextBox3.Text == "" || TextBox4.Text == "") return;
MapInfo.Geometry.DPoint dpStart = new MapInfo.Geometry.DPoint(Convert.ToDouble(TextBox1.Text), Convert.ToDouble(TextBox2.Text));
MapInfo.Geometry.DPoint dpEnd = new MapInfo.Geometry.DPoint(Convert.ToDouble(TextBox3.Text), Convert.ToDouble(TextBox4.Text));
MapInfo.Geometry.MultiCurve mc = MapInfo.Geometry.MultiCurve.CreateLine(coordSys, dpStart, dpEnd);
Color color = System.Drawing.Color.Red;
MapInfo.Styles.SimpleLineStyle bl = new MapInfo.Styles.SimpleLineStyle(new MapInfo.Styles.LineWidth(12, MapInfo.Styles.LineWidthUnit.Pixel), 1, color);
MapInfo.Styles.CompositeStyle cs = new MapInfo.Styles.CompositeStyle(null, bl, null, null);
mapXTableAddRow(temptable, mc, cs, "clgj", "车辆轨迹");//向临时表增加一行数据
FeatureLayer lyr = new FeatureLayer(temptable);
myMap.Layers.Insert(0, lyr);
}
catch (System.Exception ex)
{
//处理
}
private MapInfo.Data.Table mapXCreateTable(MapInfo.Geometry.CoordSys pCoordSys, string pTabName, string pColumnName)
{
if (MapInfo.Engine.Session.Current.MapFactory.Count == 0) return null;
MapInfo.Data.Catalog Cat = MapInfo.Engine.Session.Current.Catalog;
MapInfo.Data.Table tblTemp = Cat.GetTable(pTabName);
if (tblTemp != null) Cat.CloseTable(pTabName);
MapInfo.Data.TableInfoMemTable imt = new MapInfo.Data.TableInfoMemTable(pTabName);
imt.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(pCoordSys));
imt.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());
imt.Columns.Add(MapInfo.Data.ColumnFactory.CreateStringColumn(pColumnName, 40));
return Cat.CreateTable(imt);
}
/// <summary>
/// 向临时表里增加一行数据
/// </summary>
/// <param name="pTable">临时表</param>
/// <param name="pGeometry">地理图元</param>
/// <param name="pStyle">图元样式</param>
/// <param name="pColumnName">自定义字段名</param>
/// <param name="pColumnValue">自定义字段值</param>
private void mapXTableAddRow(MapInfo.Data.Table pTable, MapInfo.Geometry.FeatureGeometry pGeometry, MapInfo.Styles.Style pStyle, string pColumnName, string pColumnValue)
{
MapInfo.Data.Feature f = new MapInfo.Data.Feature(pTable.TableInfo.Columns);
f.Geometry = pGeometry;
f.Style = pStyle;
f[pColumnName] = pColumnValue;
pTable.InsertFeature(f);
}