您的位置:首页 > 移动开发 > Objective-C

在用户控件中使用 MapControl 的正确方法 mapxtreme载入地图

2007-10-26 11:18 549 查看
 


    private void Page_Load(object sender, System.EventArgs e)




        ...{


            // 在此处放置用户代码以初始化页面


            if(!Page.IsPostBack)




            ...{


                //载入MapControl


                string strRootPath=Server.MapPath("./ZH") + "/ZH.mws";


                MapControl_PL.Map.Clear();




                MapInfo.Mapping.MapWorkSpaceLoader wl = new  


MapInfo.Mapping.MapWorkSpaceLoader(strRootPath);




                    wl.Load(MapControl_PL.Map);




                    Load_ALL();




            }


        }

MapControl 在运行时的生命周期如下所示:
1. 在构造函数中,在创建所有默认工具的同时创建工具集合
2. 在 OnInit 中执行下列任务:
a. 尝试使用 Map 对象指向的 MapAlias 从 Session 中获取 Map 对象。如果该对象
不存在,则创建一个空地图。使用 Map 对象还可创建用于导出的 MapExport
对象。
b. 如果是第一次访问此页面并且 UseDesigntimeWorkspace 标记为 True,则将工作
空间加载到地图中。
3. 在 OnLoad 中,显示客户端上需要的所有信息,例如 javascript 和工具信息。
4. 在 RenderContents 中,渲染保存 MapControl 的标记和表示图像的 IMG 标记。工具
使用的其它信息用于客户端操作。LayerControl 以 javascript 变量的形式渲染。
在 Web 窗体的 Page_Load 方法运行时,可以从默认方法偏离并使用自己的 Map 对象。但
是,创建地图的别名必须与 MapControl 的 MapAlias 匹配。在将另一个工作空间加载到地
图时,请注意该地图的别名更改为工作空间中的别名


    private void Page_Load(object sender, System.EventArgs e)




        ...{


            // 在此处放置用户代码以初始化页面


            this.ListBox_Result.Attributes.Add("ondblclick"," ShowItem(0);");


            this.ListBoxComLineCopy.Attributes.Add("ondblclick"," ShowItem(1);");


            this.ListBoxPeoLineCopy.Attributes.Add("ondblclick"," ShowItem(3);");


            this.ListBox_PreResult.Attributes.Add("ondblclick","ShowItem(2)");


            if(!Page.IsPostBack)




            ...{


                //载入MapControl


                string strRootPath=Server.MapPath("./ZH") + "/ZH.mws";


                MapControl_PL.Map.Clear();


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


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


                MapInfo.Mapping.MapWorkSpaceLoader wl = new MapInfo.Mapping.MapWorkSpaceLoader(strRootPath);


                MapInfo.Mapping.Map map=MapInfo.Engine.Session.Current.MapFactory[MapControl_PL.MapAlias];


                if(map!=null)




                ...{


                    wl.Load(MapControl_PL.Map);


                    wl.Load(map);


                    MapControl_PL.Map=map;


                    Load_ALL();


                }


            }


        }

官方的代码 VB的:


private void Page_Load(object sender, System.EventArgs e)


{


if (!Page.IsPostBack) {


// Remove the map from session; we want to use ours


MapInfo.Engine.Session.Current.MapFactory.Remove


(MapControl1.MapAlias);


// Create a empty map with same alias as MapControl


MapInfo.Engine.Session.Current.MapFactory.CreateEmptyMap


(MapControl1.MapAlias, MapControl1.MapAlias,


new Size(200,200));


// Load the map with table.


MapInfo.Mapping.MapLoader ml =


MapInfo.Mapping.MapLoader.CreateFromFile(@"World.tab");


// Get the map object out of session we just created


MapInfo.Mapping.Map map =


MapInfo.Engine.Session.Current.MapFactory


[MapControl1.MapAlias];


if (map != null) {


ml.Load(map);


MapControl1.Map = map;


}


}


}

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐