b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

arcgis engine_mapxtreme_mapxtreme在vs里怎么用

电脑杂谈  发布时间:2017-01-24 01:05:04  来源:网络整理
mapxtrememapxtreme

本次使用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----------工具命令状态激活脚本

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

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

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

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

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

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

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

3.交互:自动会处理,啥也不用干

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

<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";

}

}

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

代码如下:

Code

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);

}

服务端到此也就结束了

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

Code

if (Session.IsNewSession)

{

MapInfo.WebControls.MapControlModel model = MapInfo.WebControls.MapControlModel.SetDefaultModelInSession();

model.Commands.Add(new WebInfoGetXY());

}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-28394-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 许晓旭
        许晓旭

      • 景池
        景池

        人家10多20年的东西拿出来照样用

        • 刘宇涵
          刘宇涵

          朝鲜人民认为他们是世界上最幸福的人

      热点图片
      拼命载入中...