MapXtreme 加载地图

 

MapXtreme 加载地图

 MapXtreme是MapInfo公司推出的一个组件,用它可以开发桌面地理信息系统,也可以开发在浏览器上阅读的网络地理信息系统。
  由于工作需要,笔者最近开始使用MapXtreme进行网络方面的工作。我把使用过程中的点滴感想写到这里,和对MapXtreme感兴趣的朋友共同交流,也请朋友们指出我的谬误。
MapXtreme资源:
  可以从 www.mapinfo.com.cn网站下载MapXtreme的试用版以及相关文档。
  MapXtreme2005中的控件可以分两大类:1。Windows窗体控件,可用于桌面开发;2。Web页面控件,可用于网络开发。对于 Web页面控件又可以分成两类,一类在MapInfo.Web.UI.WebControls名字空间中,一类在MapInfo.WebControls 名字空间中。前者在MapXtreme2004中就有,后者是新增加的,两者虽然都可用于Web页面开发,但使用时的还是有一定的差别,所以,这两类属于不同名字空间的控件最好不要混用。但是,显示图元属性的info工具(在MapInfo Professional中,标有字母i的按钮就是info工具)只存在于MapInfo.Web.UI.WebControls中。对于 MapInfo.WebControls名字空间,info工具通常用选择点的工具PointSelectionTool控件代替。
  MapInfo推荐使用MapInfo.WebControls。
1。WorkSpace Manager(工作空间管理器)和.mws文件
  MapXtreme2005会为使用者自动安装一个名为WorkSpace Manager的工具,这个工具可以把若干个图层组织起来,生成一个扩展名是.mws的文件,这个文件就是工作空间文件。.mws文件对于 MapXtreme很重要,大多数情况下,向网页上加载地图,就是加载.mws文件。
  对于WorkSpace大家并不陌生,MapInfo Professional(桌面)就可以生成WorkSpace文件,用于保存当前地图的状态和环境。所谓地图的状态和环境主要是指:地图由哪些图层组成、图元用什么符号表示、标签用什么字段表示,还有图例、专题图、查询文件等。不过MapInfo Professional生成的WorkSpace文件扩展名是.wor,并且.mws与.wor不能互换。
  由此可知,要想在网页中载入MapInfo地图,就要用WorkSpace Manager对图层进行组织,生成.mws文件。
2。地图的别名(MapAlias)
  对于MapInfo.WebControls,MapAlias是一个重要的属性,编程时,通常用MapAlias代表地图。MapAlias 是字串型,MapAlias中的字串就是地图的别名。地图的初始别名在WorkSpace Manager中指定。指定的方法:
  打开WorkSpace Manager,在左边的图层管理窗口中已经存在默认的地图别名Map1,选中Map1,点右键弹出快捷菜单,菜单中就有更改地图名称的命令。
3。在网页中载入地图
  使用Microsoft Visual Studio的Visual C#开发环境。
  向网页加载地图分设计时加载和运行时加载。
  3.1。设计时加载  
  如果用MapInfo.Web.UI.WebControls,把地图控件拉入Web窗体后,点右键打开控件的属性窗口,从这里加载.mws文件。
  用MapInfo.WebControls,把地图控件拉入Web窗体后,MapXtreme会自动在Web.config文件中写入加载.mws文件的配置语句:
  <add key="MapInfo.Engine.Session.Workspace" value="c:/Program Files/MapInfo/MapXtreme/6.6/Samples/Data/World.mws" />
如果你的.mws文件以及相关的.tab、.dat等MapInfo地图文件都放在当前开发的站点目录下,那么value自动加载.mws文件;如果当前站点没有.mws文件,value自动加载MapXtreme所带的 示例工作空间World.mws,就如上边的语句<add ....../>所示。这时你就要手动修改value值,把你想加载的工作空间路径及文件名写进去。
  再把放大、缩小、移动等工具控件拉入Web窗体,编译生成.dll文件,一个最简单的网络地理信息系统就可以运行了。
  <add key="MapInfo.Engine.Session.Workspace" value="...... "/>这一条语句可以加载多个工作空间,只要在不同的工作空间之间用分号分隔开就行了。不过要注意的是,各个工作空间中地图的别名不要重名,以免引出错误。
  3.2。运行时加载
  对于MapInfo.Web.UI.Webcontrols,可使用如下例程(C#):
private void Page_Load(object sender, System.EventArgs e)//这是页面载入事件函数
{
if (!Page.IsPostBack) {

MapInfo.Engine.Session.Current.MapFactory.Remove(MapControl1.MapAlias);

MapInfo.Engine.Session.Current.MapFactory.CreateEmptyMap(MapControl1.MapAlias, MapControl1.MapAlias, new Size(200,200));

MapInfo.Mapping.MapLoader ml = MapInfo.Mapping.MapLoader.CreateFromFile(@"World.tab");
//为地图指定新的会话
MapInfo.Mapping.Map map = MapInfo.Engine.Session.Current.MapFactory[MapControl1.MapAlias];
if (map != null) {
ml.Load(map);
MapControl1.Map = map;
}
}
    }
  
4。状态管理(StateManager)
  MapXtreme 2005说,如果要为所使用的工具添加其它交互用法,那就要编写状态管理程序。状态管理程序要继承StateManager类,这个类属于MapInfo.WebControls名字空间。但是,MapXtreme 2004没有这个类。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值