mapxtreme c# 画点问题
想实现在指定的经纬度处画点。现在的问题是设定的经纬度没用,只能在地图的中点画点,且只能画这一个点。
希望大家帮我看看,谢谢。
代码参考了网上的实例,如下:
private void button3_Click(object sender, EventArgs e)
{
MapInfo.Data.Catalog Cat = MapInfo.Engine.Session.Current.Catalog;
TableInfoMemTable TmInfo = new TableInfoMemTable("Tm");
TmTbl = Cat.GetTable("Tm");
if (TmTbl != null)
{ Cat.CloseTable("Tm"); } //如果表不为空,标明没有重名
/构造GeometryColumn字段
TmInfo.Columns.Add(ColumnFactory.CreateFeatureGeometryColumn(this.mapControl1.Map.GetDisplayCoordSys()));
//构造Style类型Column字段
TmInfo.Columns.Add(ColumnFactory.CreateStyleColumn());
//构造String类型Column字段
TmInfo.Columns.Add(ColumnFactory.CreateStringColumn("Name", 12));
TmInfo.Columns.Add(ColumnFactory.CreateStringColumn("Loca", 50));
//构造Int类型Column字段
TmInfo.Columns.Add(ColumnFactory.CreateIntColumn("Indx"));
TmInfo.TableType
TmTbl = Cat.CreateTable(TmInfo); //创建临时表
TmFlyr = new FeatureLayer(TmTbl); //创建临时图层
this.mapControl1.Map.Layers.Add(TmFlyr); //将临时图层加入当前的MapXTreme图层当中
DPoint Vpt; //定义一个点
Vpt.x = -101.236401711274; //赋值(经纬度)
Vpt.y = 20.6474803334433;
//下面应该是将坐标点根据当前地图的坐标系进行了一次转换
FeatureGeometry SVpt = new MapInfo.Geometry.Point(TmFlyr.CoordSys, new DPoint(Vpt.x, Vpt.y)) as FeatureGeometry;
MapInfo.Styles.CompositeStyle Vcs = new MapInfo.Styles.CompositeStyle(new MapInfo.Styles.SimpleVectorPointStyle(37, Color.Red, 10)); //创建点样式
Feature Vftr = new Feature(TmTbl.TableInfo.Columns); //创建图元
Vftr.Geometry = SVpt; //设置图元属性
Vftr.Style = Vcs;
Vftr["Name"] = "KHT";
Vftr["Loca"] = "Tianjin";
Vftr["Indx"] = 1;
TmTbl.InsertFeature(Vftr); //将图元加入表中
}