1 设置图层可选状态
2 设置层的可用状态
3 层居中,看全图
4 放大缩小地图
5 移动层的顺序
mapControl1.Map.Layers.Move(index1,index2);
6 图元/图层透明
/// <summary>
/// 设置层的透明与否
/// </summary>
/// <param name="layerName">层名</param>
/// <param name="opaqueType">不透明类型 ALL 全部不透明 BORDER 只有边界不透明(内部透明) NONE 全部透明</param>
/// <param name="borderColor">如果是边界不透明,此处设置边界颜色</param>
![](https://excel.cnblogs.com/Images/OutliningIndicators/None.gif)
public
void
LayerTransparent(
string
layerName,OpaqueType opaqueType,System.Drawing.Color borderColor)
{
![](https://excel.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MapInfo.Styles.CompositeStyle compositeStyle = GetOpaqueStyle(opaqueType,borderColor);
![](https://excel.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//创建连接和命令来更新table中的数据
MapInfo.Data.MIConnection connection=new MapInfo.Data.MIConnection();
connection.Open();
MapInfo.Data.MICommand command=connection.CreateCommand();
command.CommandText = "update " + layerName + " set obj=obj,MI_Style=@style";
command.Parameters.Add("@style",compositeStyle);
command.Prepare();
command.ExecuteNonQuery();
![](https://excel.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//关闭连接
command.Cancel();
command.Dispose();
connection.Close();
connection.Dispose();
}
/// <summary>
/// 创建style
/// </summary>
/// <param name="opaqueType">不透明类型:ALL全部不透明(白色实心);BORDER边界不透明(填充部分透明);NONE全透明</param>
/// <param name="borderColor">如果opaqueType=BORDER,此处设定边界颜色</param>
/// <returns>组合style</returns>
![](https://excel.cnblogs.com/Images/OutliningIndicators/None.gif)
private
MapInfo.Styles.CompositeStyle GetOpaqueStyle(OpaqueType opaqueType,System.Drawing.Color borderColor)
{
MapInfo.Styles.SimpleInterior simpleInterior;
if(opaqueType==OpaqueType.ALL)
simpleInterior= new MapInfo.Styles.SimpleInterior(); //缺省构造函数是白色实心
else
simpleInterior= new MapInfo.Styles.SimpleInterior(1); //0是线透明,1是面透明
MapInfo.Styles.LineWidth lineWidth = new MapInfo.Styles.LineWidth(1,MapInfo.Styles.LineWidthUnit.Point);
![](https://excel.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MapInfo.Styles.SimpleLineStyle simpleLineStyle;
if(opaqueType==OpaqueType.ALL)
simpleLineStyle = new MapInfo.Styles.SimpleLineStyle(lineWidth);
else if(opaqueType==OpaqueType.BORDER)
simpleLineStyle = new MapInfo.Styles.SimpleLineStyle(lineWidth,2,borderColor); //2表示填充透明,即能够显示轮廓
else
simpleLineStyle = new MapInfo.Styles.SimpleLineStyle(lineWidth,0); //0表示全部透明,即连轮廓都看不到
![](https://excel.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MapInfo.Styles.AreaStyle areaStyle = new MapInfo.Styles.AreaStyle(simpleLineStyle,simpleInterior);
![](https://excel.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
MapInfo.Styles.CompositeStyle compositeStyle = new MapInfo.Styles.CompositeStyle(areaStyle,null,null,null);
return compositeStyle;
}
7 选择全部图元
![](https://excel.cnblogs.com/Images/OutliningIndicators/None.gif)
MapInfo.Engine.Session.Current.Catalog.Search(
![](https://excel.cnblogs.com/Images/OutliningIndicators/None.gif)
table,
![](https://excel.cnblogs.com/Images/OutliningIndicators/None.gif)
MapInfo.Data.SearchInfoFactory.SearchAll(),
![](https://excel.cnblogs.com/Images/OutliningIndicators/None.gif)
MapInfo.Engine.Session.Current.Selections.DefaultSelection,
![](https://excel.cnblogs.com/Images/OutliningIndicators/None.gif)
MapInfo.Data.ResultSetCombineMode.Replace);
8 设置坐标系
缺省情况下,MapXtreme使用的CoordSys是经纬度投影(LongLat)和WGS84基准面。我想修改投影类型为 CoordSysType.TransverseMercator ,基准面为DatumID.Pulkovo1942
MapInfo.Geometry.CoordSysFactory coordSysFactory=MapInfo.Engine.Session.Current.CoordSysFactory;
mapControl1.Map.SetDisplayCoordSys(coordSysFactory.CreateCoordSys("mapinfo:coordsys 8,1001,7,117,0,1,20500000,0"));
coordSysFactory.CreateCoordSys("mapinfo:coordsys 8,1001,7,117,0,1,20500000,0") 默认的原点是(B=0,L=117),如果要把原点设在(23,117)应该怎么写这个字符串呢?
coordSysFactory.CreateCoordSys("mapinfo:coordsys 8,1001,7,114,23,1,20500000,25000000")
9 保存新画的层为tab文件
下面的源码是新建一个永久表,然后在表中添加feature,然后保存为硬盘上的tab文件。
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()+" 千米";