MapXtreme 2005 学习心得 在地图上创建点/线并显示标注(五)

新建示例

 

1:新建项目

新建一个网站,选择MapXtreme 6.7.1 Web Application

在App_Code中,我们新建一个类,起名叫:LayerManager.cs

 

2:把上节函数放到类LayerManager中

把上一节的函数代码全copy过来,还有using的名称空间

 

3:打开MapForm.cs,在Page_Load代码里,添加如下代码


 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 函数如下


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:完整的页面代码如下


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,保存,浏览,即可在页面上看到在相应的地方上,创建了一个五角星和一个红色单向箭头线

 

时间: 2024-12-05 05:12:20

MapXtreme 2005 学习心得 在地图上创建点/线并显示标注(五)的相关文章

MapXtreme 2005 学习心得 第八节Session问题澄清-两种配置方式致开发方式不同(九)

前言: 出差一个月了,终于回来了,本来想继续写CYQ.Data的序列文章,突然看到MapXtreme有一条回应; 就写多一篇文章,澄清下我上一篇文章MapXtreme 2005 学习心得 一此问题(八)所说中的Session问题.     之前的调试方式 在MapXtreme 安装目录下,有一个MapXtremeControl的源码. 在上一篇中,由于调试不了源码,而只能在外面反复大量调试,以结果来猜测问题.以至于得出Session不稳定的结论.     先说说怎么调试MapXtremeCont

MapXtreme 2005 学习心得 概述(一)

前言: 没折,公司丢了这个东西过来,说要搞车载的GRRS定位在地图上显示. 杂七杂八的折腾到现在快两周了,决定写点学习心得,以示后人 公司既然已定了用MapXtreme 2005开发,没折. 于是开始研究,找资料研究了两天,了解下这个产品,才敢开始运行示例代码. 公司之前用MapX,用在C/S版本的系统中 这下要用MapXtreme,用在B/S版本的系统中 MapX和MapXtreme都是mapinfo的产品,所以代码中的名称空间都是MapInfo.xxx开头的.   安装与安装后情况说明: 安

MapXtreme 2005 学习心得 将wor格式转wms格式(十)

地图从Wor格式转wms的方法 一.先通过MapInfo Professional 6.5工具,转成gst格式 方法如下: 1.打开工具 2.File->Open WordSpace->选择wor格式文件打开地图 3.Tools->Tool Manager->Mapx Geoset Utility打上Loaded列对应的勾->OK确定 4.Tools->Mapx Geoset Utility[添加后会出现]->Save Mapx Geoset As- 5.出现对话

MapXtreme 2005 学习心得 一些基础函数代码(四)

网上看到的基本上代码都大同小异,经过本人小小修改或未修改的代码如下:  一:先创建图层 1:创建图层函数代码:CreateLayer  /// <summary>    /// 创建临时图层    /// by 路过秋天    /// <param name="tableName">表名</param>    /// <param name="layerName">图层名</param>    /// &l

MapXtreme 2005 学习心得 关于地图投影坐标问题的解决方式(十四)

前言: 昨日一大早上级和工程部的来电夺命追魂Call. 说甘肃联通的车载测试在地图上显示不出来数据. 那边只有内网,这边没法直接查问题,后来那边把自己的上网卡往服务器里插,然后用了个TeamViewer远程工具. 那边太冲动,话没说完就拔卡,弄的我只好用短信通信,浪费不少短信费,还顶上一个星期天. 经过那卡的不能再卡的网速折腾一下之后. 发现那边局方给的地图经纬度取出来是非正常坐标.[其实就是其它坐标系了,经纬度都几万几万的说的那种] 不过自己电脑没装MapXtreme这工具,也没地图,加上这网

MapXtreme 2005 学习心得 画道路区域(十二)

有了需求,又得弄那MapXtreme地图了,需要增加一个道路区域监控. 折腾了一天,算是有点结果.   一:画线 前台JS可以通过自带的测量功能来画线,使用Command="Distance",同样双击结束画线. 上一展画线的图: 2.画区域 前台JS可以通过自带的功能来区域,使用Command="PolygonSelection",同样双击结束画区域 同样上一下图: 二:后台显示: 画线的可以直接用画线的画就行了.以前说过就不说了. 以下为显示多边型代码:    

MapXtreme 2005 学习心得 一些问题(八)

先上一张MapXtreme的丑陋的图片 这个是我历经千山才弄出来的效果. 在处理的过程中,会有一些问题经常报错,网上几乎找不到资料可以解决了,本人经过大量实践,反复点击报错,代码步步注释的方法. 终于小有成果. Table.BeginAccess(TableAccessMode.Write);这句代码,报错率非常高. 我们在修改一个表的时候,通常要begin一下,然后处理,处理完之后再end一下 在反复的begin与end中,一旦拿不到锁,就报错了.通常这个问题引起,是另一个表正在处理时,发生异

MapXtreme 2005 学习心得 相关代码知识(三)

在看代码之前,先来了解下简单的代码知识: 1.MapFactory[索引或地图别名] 简单理解为存放地图的容器,要地图就来这里取 相关代码:MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[索引或地图别名];   2.Map:地图 里面有很多东西,比如坐标体系,很多张图层(Layers),还多个图元(Legends); 相关代码:取图层,myMap.Layers[图层名];取图元,myMap.Legends

MapXtreme 2005 学习心得 了解新建MapXtreme项目结构(二)

一:新建示例  首先,打开VS2005,新建网站,选择MapXtreme 6.7.1 Web Application   救命网站目录关键结构如下: 1:App_Code文件夹 有一个自定义的AppStateManager.cs类,继承自StateManager,主要是实现自定义的地图保存与还原,地图都存在Session中的,而且还是序列化成二进制存进去的   2:MapXtremeWebResources文件夹 主要有几个关键的js,比如: Interaction.js,交互用的js,比如是实