mapxtreme2008 开发中点线面、自定义定制图元的功能都是通过图层实现的,但图层的方式有时会出现卡顿的问题,如下是定制图元的实现方式,若不用图层该怎么实现?
//这是定制图元的功能
Map map = this.mapControl.Map;
Table tblTemp = Session.Current.Catalog.GetTable("temp");
if (!mIsRun)
bmpPath = SaveBmpPic(@"\dataImg\" + System.IO.Path.GetFileName(platform.MKFile), platform.Sailing.Heading);
if (tblTemp == null)
{
TableInfoMemTable tableInfoMemTable = new TableInfoMemTable("temp");
tableInfoMemTable.Columns.Add(ColumnFactory.CreateFeatureGeometryColumn(map.GetDisplayCoordSys()));
tableInfoMemTable.Columns.Add(ColumnFactory.CreateStyleColumn());//样式列
tableInfoMemTable.Columns.Add(ColumnFactory.CreateStringColumn("ID", 20));
tableInfoMemTable.Columns.Add(ColumnFactory.CreateStringColumn("Name", 30));
tblTemp = MapInfo.Engine.Session.Current.Catalog.CreateTable(tableInfoMemTable);
mFeatureLayer = new MapInfo.Mapping.FeatureLayer(tblTemp);
map.Layers.Add(mFeatureLayer);
}
FeatureGeometry featureGeometry = new MapInfo.Geometry.Point(mFeatureLayer.CoordSys, dPoint);
BitmapPointStyle bitmapPointStyle = new BitmapPointStyle(Path.GetFileName(bmpPath), BitmapStyles.None, new System.Drawing.Color(), 25);
CompositeStyle compositeStyle = new CompositeStyle(bitmapPointStyle);
MapInfo.Data.Feature feature = new MapInfo.Data.Feature(mFeatureLayer.Table.TableInfo.Columns);
feature["ID"] = platform.ID;
feature["Name"] = System.IO.Path.GetFileNameWithoutExtension(platform.MKFile);
feature.Geometry = featureGeometry;
feature.Style = compositeStyle;
mFeatureLayer.Table.InsertFeature(feature);