MapXtreme 2005 学习心得 使用WebTool工具(七)

简介:

本次使用WEbTool自定义工具,实现一个简单的功能

效果描述:

在激发自定义工具后,在地图界面点击时,弹出该点的客户端坐标,与相应的经纬度坐标

 

一:先从客户端处理怎么发送请求

 

1:拖webtool工具到界面

将工具WebTool 拖到MapForm.aspx界面上,设置对应的地图如下: 

< cc1:WebTool  ID ="WebTool1"  runat ="server"  MapControlID ="MapControl1"     />

说明:

复制代码
客户端有三个重要的脚本:在项目MapXtremeWebResources文件夹下

1.Interaction.js---交互类型脚本

(已实现的有:ClickInteraction(单击)、RectInteraction(画矩形)..等等,基本是和已有工具对应的)

2.Command.js----命令发送请求脚本

(已实现的有:MapCommand(获取地图)、PanCommand(拖动地图)、DistanceCommand(测量)..等等,基本是和已有工具对应的)

3.Tool.js----------工具命令状态激活脚本

(在激活不同的工具时,改变命令的请求参数)
复制代码

 

[现在开始处理自定义的客户端脚本请求]

 

2:设置工具属性事件为点击

交互:由于要实现的功能,交互类型也是通过点击引发的,交互就直接使用已有的ClickInteraction

因此设置工具属性:ClientInteraction="ClickInteraction"

 

3:设置工具命令[使用测量工具的命令功能]

命令:由于要实现的功能,客户端类型在接收服务端返回的消息后,直接弹出,这点和测量功能是一样的,于是命令就直接使用DistanceCommand

因此设置工具属性:ClientCommand="DistanceCommand"

 

4:自定义命令关键字

再设置一个自定义命令文本:Command="GetXY" --这个GetXY是随便起的名字,等一下对应服务端的请求命令

 

OK,至此,客户端处理完成,实际我们什么也没做,只是把工具往界面一拖,然后设置了一下属性:

< cc1:WebTool  ID ="WebTool1"  runat ="server"  MapControlID ="MapControl1"   ClientInteraction ="ClickInteraction"  Command ="GetXY"  ClientCommand ="DistanceCommand"   />

 

二:服务端接收请求并输出信息

 

1:新建自定义命令类:WebInfoGetXY

在App_Code里,我们新建一个类,叫WebInfoGetXY,让它继承自MapInfo.WebControls.MapBaseCommand

同时加上可序列化属性[Serializable],不加就报错了,配置文件那节里有说到

在构造函数里,写base.Name = "GetXY";//这个就对应了客户端发送的Command

代码如下:

复制代码
[Serializable]
public   class  WebInfoGetXY:MapInfo.WebControls.MapBaseCommand
{
    
public  WebInfoGetXY()
    {
          
base .Name  =   " GetXY " ;
    }
}
复制代码

 

然后,重写一下Process()方法输出文本即可,代码如下

复制代码
     public   override   void  Process()
    {
        MapControlModel model 
=  MapControlModel.GetModelFromSession();
        MapInfo.Mapping.Map map 
=  model.GetMapObj(MapAlias);
        System.Drawing.Point[] points 
=  ExtractPoints(DataString);
        MapInfo.Geometry.DPoint dpoint 
=   new  MapInfo.Geometry.DPoint();
        map.DisplayTransform.FromDisplay(points[
0 ],  out  dpoint); // 屏幕xy转经纬度

        
string  outText = " 屏幕xy: "   +  points[ 0 ].X  +   " , "   +  points[ 0 ].Y;
        outText
+=   " <br>经纬度xy: "   +  dpoint.x  + " , " +  dpoint.y;
        HttpContext.Current.Response.Write(outText);
    }
复制代码

OK,服务端到此也就结束了

 

三:在页面上用代码注册工具命令

复制代码
       if (Session.IsNewSession)
        {
            MapInfo.WebControls.MapControlModel model = MapInfo.WebControls.MapControlModel.SetDefaultModelInSession();
            model.Commands.Add(new WebInfoGetXY());
        }
复制代码

 

 

四:运行效果

在激发自定义工具后,在地图界面点击时,弹出该点的客户端坐标,与相应的经纬度坐标

 

相关文章
|
4月前
|
项目管理
入职必会-开发环境搭建08-思维导图-XMind2021下载和安装
XMind 是一款知名的思维导图软件,旨在帮助用户更好地组织思维、展示概念和规划项目。XMind 提供了丰富的思维导图绘制工具和功能,适用于个人用户、教育机构和商业团队等不同领域的用户。
入职必会-开发环境搭建08-思维导图-XMind2021下载和安装
|
Web App开发 编解码 Java
Android开发实用工具汇总-持续更新
Android开发实用工具汇总-持续更新
93 1
|
缓存 Kubernetes 网络协议
k8s安装笔记
k8s安装笔记
k8s安装笔记
|
Windows
超好用笔记软件Typora安装教程
超好用笔记软件Typora安装教程
497 0
超好用笔记软件Typora安装教程
|
Kubernetes 网络协议 Docker
循序渐进的手动安装k8s笔记-3
在上一篇笔记中,我们已经可以使用 k8s1.6 版本搭建一个基础的集群,在集群内部可以完成不同 node 之间的 pod 互通并且可以完成服务发现。但已经完成的这个集群仍然是通过不安全的 8080 端口进行的,并且除了最基本的 apiserver 和 controller-manager 之间以外,其他组件间通讯都没有认证措施。
1730 0
|
数据采集 Linux Windows
下一篇
无影云桌面