asp.net mapxtreme 加载地图

MapXtreme入门资料(转)

<1> asp.net中如何用MapControl 动态加载地图

using MapInfo.Engine;
using MapInfo.Mapping;
MapControl1.Map.Clear();
MapGeosetLoader gl=new MapGeosetLoader(@"F:\test.gst");
MapControl1.Map.Load(gl);

其实根据不同的格式加载地图的办法也有多种,MapWorkSpaceLoader

<2> 创建MSW文件
MapInfo.Persistence.WorkSpacePersistence wsp = new MapInfo.Persistence.WorkSpacePersistence();
wsp.Save ("c:\temp\newwork.mws"); //保存文件

<3> 创建InfoTool的事件
InfoTool的事件与button不一样,而是 InfoRetrieved。
创建后将是这样:
private void InfoToolControl1_InfoRetrieved(object sender, MapInfo.Web.UI.WebControls.InfoToolEventArgs e)
{
string Info = "";
foreach(MapInfo.Data.ITableFeatureCollection fc in e.Features)
{
    foreach(MapInfo.Data.Feature f in fc)
    {
       Info= string.Format(Info + f[1].ToString() + " ");
     }
fc.Table.Close();
}
}
<4> 如何通过web.config来加载地图
在web.config中,在下添加的Key
In the HTML view of the form under the mapinfowebuiwebcontrols:MapControl tag, set the following properties:
在HTML视图中,更改 mapinfowebuiwebcontrols:MapControl的属性MapAlias必须以.MSW结尾
UseDesigntimeWorkspace="fale" ,这一句要删除WorkspaceFileName="WebForm1MapControl1.mws"


<5> 在添加了新层后如何更新地图让InfoTool可以获取他的信息
MapInfo.Data.Table tab = MapInfo.Engine.Session.Current.Catalog.OpenTable(@"C:\Program Files\MapInfo\MapXtreme2004\Maps\World\world.tab");
MapInfo.Mapping.FeatureLayer fl = new MapInfo.Mapping.FeatureLayer(tab);
this.MapControl1.Map.Layers.Add(fl);
this.MapControl1.SelectableLayers.Add(fl.Name);

<6> MapXtreme2004应用问答
问:如何在桌面程序中更改地图的坐标系?
答:代码如下:
    using MapInfo.Geometry;    //要使用到MapInfo.Geometry命名空间
    Map map = mapControl1.Map;
    MapInfo.Geometry.CoordSys coordSys = Session.Current.CoordSysFactory.CreateLongLat(DatumID.NAD83);
    //DatumID为枚举类型,其中列出了经纬度坐标系统的大量枚举类型,参阅帮助可获取更多信息。
    map.SetDisplayCoordSys(coordSys);

问:在C#应用中如何读取存在ORACLE(或SQL Server)中的MapInfo表?
答:读取ORACLE中表的方法如下代码:
   using MapInfo.Data;           //这里要添加对MapInfo数据的引用
   MIConnection Connection=new MIConnection();
   Connection.Open();
   MapInfo.Data.Table [] tables=new MapInfo.Data.Table[4];
   TableInfoServer tis1=new TableInfoServer("WORLD","SVR=MYORACLE;UID=system;PWD=manager","select * from world",MapInfo.Data.ServerToolkit.Oci);
   tables[0]=Connection.Catalog.OpenTable(tis1);
   TableInfoServer tis2=new TableInfoServer("WORLDCAP","SVR=MYORACLE;UID=system;PWD=manager","select * from worldcap",MapInfo.Data.ServerToolkit.Oci);
   tables[1]=Connection.Catalog.OpenTable(tis2);
   TableInfoServer tis3=new TableInfoServer("wldcty25","SVR=MYORACLE;UID=system;PWD=manager","select * from wldcty25",MapInfo.Data.ServerToolkit.Oci);
   tables[2]=Connection.Catalog.OpenTable(tis3);
   TableInfoServer tis4=new TableInfoServer("OCEAN","SVR=MYORACLE;UID=system;PWD=manager","select * from OCEAN",MapInfo.Data.ServerToolkit.Oci);
   tables[3]=Connection.Catalog.OpenTable(tis4);
   MapControl1.Map.Load(new MapInfo.Mapping.MapTableLoader(tables));
   Connection.Close();
而读取存放在SQL Server2000中的表时,应当使用如下修改过的代码:
   /* SQL Server数据库连接*/
   MIConnection Connection=new MIConnection();
   Connection.Open();
   MapInfo.Data.Table [] tables=new MapInfo.Data.Table[2];
   TableInfoServer tis1=new TableInfoServer("CH_SHENGHUI","DRIVER={SQL Server};SERVER=YC31;DATABASE=MYWEBGIS;Trusted_Connection=Yes","select * from CH_SHENGHUI",MapInfo.Data.ServerToolkit.Odbc);//注意这里使用的是Odbc,且区分大小写。
   tables[0]=Connection.Catalog.OpenTable(tis1);
   TableInfoServer tis2=new TableInfoServer("CH_SHENGJIE_P","DRIVER={SQL Server};SERVER=YC31;DATABASE=MYWEBGIS;Trusted_Connection=Yes","select * from CH_SHENGJIE_P",MapInfo.Data.ServerToolkit.Odbc);//注意这里使用的是Odbc,且区分大小写。
   tables[1]=Connection.Catalog.OpenTable(tis2);
   mapControl1.Map.Load(new MapInfo.Mapping.MapTableLoader(tables));
   Connection.Close();
   /*上面的TableInfoServer语句分开来写可以表达成如下方法。*/
   /*
   TableInfoServer tiServer = new TableInfoServer("SHENGHUI");
   tiServer.ConnectString = "DRIVER={SQL Server};SERVER=YC31;DATABASE=MYWEBGIS;Trusted_Connection=Yes";
   tiServer.Query = "Select * from CH_SHENGHUI";
   tiServer.Toolkit = ServerToolkit.Odbc;
   MapTableLoader tl = new MapTableLoader(tiServer);
   mapControl1.Map.Load(tl);
   */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值