新建示例
1:新建项目
新建一个网站,选择MapXtreme 6.7.1 Web Application在App_Code中,我们新建一个类,起名叫:LayerManager.cs
2:把上节函数放到类LayerManager中
把上一节的函数代码全copy过来,还有using的名称空间
3:打开MapForm.cs,在Page_Load代码里,添加如下代码
Code string tableName = " tableName " , layerName = " layerName " ; // 随便定义两个名字 LayerManager.CreateLayer(tableName, layerName); // 创建图层 LayerManager.AddPoint(layerName, GetDPoint( 60 , 60 ), 35 , Color.Red); // 创建一个红色五角星的点 LayerManager.AddLine(layerName, GetDPoint( 160 , 160 ), GetDPoint( 300 , 160 ), 59 , Color.Red); // 创建一条红色单箭头的线 LayerManager.ShowValue(tableName, " value " ); // 显示标注
说明:
里面有一个GetDPoint(int x,int y)函数,主要是传入客户端的坐标,返回地图的经纬度
GetDPoint 函数如下
Code private DPoint GetDPoint( int x, int y) { DPoint dp = new DPoint(); System.Drawing.Point point = new System.Drawing.Point(x, y); // 客户端坐标(相对地图) Map map = MapInfo.Engine.Session.Current.MapFactory[ 0 ]; map.DisplayTransform.FromDisplay(point, out dp); // 转成相应的经纬度坐标 return dp; }
4:完整的页面代码如下
Code public partial class _Default : System.Web.UI.Page { private void Page_Load( object sender, System.EventArgs e) { // If the StateManager doesn't exist in the session put it else get it. if (StateManager.GetStateManagerFromSession() == null ) StateManager.PutStateManagerInSession( new AppStateManager()); // Now Restore State StateManager.GetStateManagerFromSession().ParamsDictionary[StateManager.ActiveMapAliasKey] = MapControl1.MapAlias; StateManager.GetStateManagerFromSession().RestoreState(); string tableName = " tableName " , layerName = " layerName " ; // 随便定义两个名字 LayerManager.CreateLayer(tableName, layerName); // 创建图层 LayerManager.AddPoint(layerName, GetDPoint( 60 , 60 ), 35 , Color.Red); // 创建一个红色五角星的点 LayerManager.AddLine(layerName, GetDPoint( 160 , 160 ), GetDPoint( 300 , 160 ), 59 , Color.Red); // 创建一条红色单箭头的线 LayerManager.ShowValue(tableName, " value " ); // 显示标注 } private DPoint GetDPoint( int x, int y) { DPoint dp = new DPoint(); System.Drawing.Point point = new System.Drawing.Point(x, y); // 客户端坐标(相对地图) Map map = MapInfo.Engine.Session.Current.MapFactory[ 0 ]; map.DisplayTransform.FromDisplay(point, out dp); // 转成相应的经纬度坐标 return dp; } // At the time of unloading the page, save the state private void Page_UnLoad( object sender, System.EventArgs e) { StateManager.GetStateManagerFromSession().SaveState(); } }
5:运行结果
OK,保存,浏览,即可在页面上看到在相应的地方上,创建了一个五角星和一个红色单向箭头线