zl程序教程

您现在的位置是:首页 >  工具

当前栏目

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

工具 学习心得 2005 使用
2023-09-14 08:59:38 时间
将工具WebTool 拖到MapForm.aspx界面上,设置对应的地图如下: 

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

复制代码 ExpandedBlockStart.gif 客户端有三个重要的脚本:在项目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" /
在App_Code里,我们新建一个类,叫WebInfoGetXY,让它继承自MapInfo.WebControls.MapBaseCommand

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

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

代码如下:


[Serializable]
public class WebInfoGetXY:MapInfo.WebControls.MapBaseCommand
{
    public WebInfoGetXY()
    {
          base.Name = "GetXY";
    }
复制代码
复制代码 ExpandedBlockStart.gif     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);
    }
ExpandedBlockStart.gif        if (Session.IsNewSession)
        {
            MapInfo.WebControls.MapControlModel model = MapInfo.WebControls.MapControlModel.SetDefaultModelInSession();
            model.Commands.Add(new WebInfoGetXY());
        }