MapXtreme实用技巧

发布时间: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

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477