发布时间:2025-12-10 11:22:03 浏览次数:16
MapXtreme实用技巧与源码10例
1 设置图层可选状态
/** <summary>
/// 改变层的可选择状态
/// </summary>
/// <param name="selectableStatus"></param>
/// <returns></returns>
public bool LayerSelectableStatusUpdate(string tableAlias,bool selectableStatus)
{
if(mapControl1.Map.Layers[tableAlias]==null)
return false;
MapInfo.Mapping.LayerHelper.SetSelectable(mapControl1.Map.Layers[tableAlias],selectableStatu
s);
return true;
}
2 设置层的可用状态
tableInfoNative=newMapInfo.Data.TableInfoNative(tableName);
tableInfoNative.TablePath=@"D:\DATA\"+tableName+".TAB";
tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("ID"));
tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());
MapInfo.Geometry.CoordSys coordSys =mapControl1.Map.GetDisplayCoordSys();
tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(coordSys)
);
MapInfo.Data.Table table
=MapInfo.Engine.Session.Current.Catalog.CreateTable(tableInfoNative);
//以下代码是建立临时表
// MapInfo.Data.TableInfo tableInfo
=MapInfo.Data.TableInfoFactory.CreateTemp(tableName);
// tableInfo.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("ID"));
// MapInfo.Data.Table table
=MapInfo.Engine.Session.Current.Catalog.CreateTable(tableInfo);
MapInfo.Mapping.FeatureLayer featureLayer =
newMapInfo.Mapping.FeatureLayer(table);
this.mapControl1.Map.Layers.Add(featureLayer);
return table;
}
private void AddFeaturesAndSave()
{
MapInfo.Styles.SimpleLineStyle simpleLineStyle =
newMapInfo.Styles.SimpleLineStyle(new
MapInfo.Styles.LineWidth(1,MapInfo.Styles.LineWidthUnit.Point));
MapInfo.Styles.CompositeStyle compositeStyle =
newMapInfo.Styles.CompositeStyle(null,simpleLineStyle, null, null);
MapInfo.Geometry.CoordSys coordSys =mapControl1.Map.GetDisplayCoordSys();
MapInfo.Data.Table table = CreateNewMapDataTable("NewTable");
MapInfo.Data.TableInfo tableInfo = table.TableInfo;
while(……)
{
MapInfo.Data.Feature feature = newMapInfo.Data.Feature(tableInfo.Columns);
feature.Geometry = ……
feature.Style = ……
feature["ID"] = ……
table.InsertFeature(feature);
}
tableInfo.WriteTabFile(); //保存为.tab文件
mapControl1.Refresh();
}
10 计算缩放比例
/** <summary>
/// 重画控件时计算缩放比例
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void mapControl1_Paint(object sender,PaintEventArgs e)
{
MapInfo.Geometry.Distance zoomDistance=this.mapControl1.Map.Zoom;
double zoom=Convert.ToDouble(Convert.ToInt32(zoomDistance.Value*16.09))/10;
this.statusBar1.Text="缩放比例:"+zoom.ToString()+" 千米";
}
转载于:https://www.cnblogs.com/bjxly/archive/2012/01/04/2312602.html