目的:
1.arcgis server9.2 ADF的Callback机制

准备工作:
1.用ArcGis Server Manager或者ArcCatalog发布一个叫world的Map Service,并且把这个Service启动起来。
2.找到DeveloperKit\SamplesNET\Server\Web_Applications目录下的Common_CallbackCsharp.zip。

开始: 
1.新建名为Callback的ASP.NET Web应用程序。
2.在Default.aspx页面中加入MapResourceManager控件ID为MapResourceManager1,并且设置MapResourceItem的属性;Map控件ID为Map1,MapResourceManager属性为MapResourceManager1。具体过程可以参考ArcGIS.Server.9.2.DotNet自带例子分析(一、一);在地图控件的4个边分别添加LabelW、LabelN、LabelE、LabelS DIV控件,具体代码如下:

3.接下来做当地图视图范围发生变化时更新4个边的LabelW、LabelN、LabelE、LabelS DIV控件坐标显示,显示的是地图每个边的坐标,给Map1控件添加protected void Map1_ExtentChanged(object sender, ExtentEventArgs args)事件,然后编写相应的代码,具体的代码和说明如下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一) protected void Map1_ExtentChanged(object sender, ESRI.ArcGIS.ADF.Web.UI.WebControls.ExtentEventArgs args)
 2        }
4.在页面上添加Toolbar控件ID为Toolbar1,BuddyControls属性为Map1,同时添加ZoomIn、ZoomOut、Pan、FullExt四个Map Navigation按钮,然后添加一个Tool按钮Name属性为CenterAt,ClientAction属性为Point,ServerActionAssembly属性为Callback,ServerActionClass属性为Callback.CustomTool。具体的代码如下:
1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)<esri:Toolbar ID="Toolbar1" runat="server" BuddyControlType="Map" 
2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)ArcGIS.Server.9.2.DotNet自带例子分析(二、一)..                        
3ArcGIS.Server.9.2.DotNet自带例子分析(二、一)<esri:Tool ClientAction="Point" JavaScriptFile="" Name="CenterAt" ServerActionAssembly="Callback" ServerActionClass="Callback.CustomTool" />
4ArcGIS.Server.9.2.DotNet自带例子分析(二、一)ArcGIS.Server.9.2.DotNet自带例子分析(二、一)..
5ArcGIS.Server.9.2.DotNet自带例子分析(二、一)</esri:Toolbar>
5.新建CustomTool.cs类,实现IMapServerToolAction接口具体的代码和说明如下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)namespace Callback
 2
6.这样重新定位地图中心的功能完成了,而已运行试验一下效果。
7.在Default.aspx页面上添加一个Menu控件ID为Menu1,同时添加2个子项Asia和Africa,具体的代码如下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)<asp:Menu ID="Menu1" runat="server" BackColor="#B5C7DE" DynamicHorizontalOffset="2"
 2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284E98" StaticSubMenuIndent="10px">
 3ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
 4ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <DynamicHoverStyle BackColor="#284E98" ForeColor="White" />
 5ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <DynamicMenuStyle BackColor="#B5C7DE" />
 6ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <StaticSelectedStyle BackColor="#507CD1" />
 7ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <DynamicSelectedStyle BackColor="#507CD1" />
 8ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
 9ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <Items>
10ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                            <asp:MenuItem Text="Zoom To" Value="Zoom To">
11ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                                <asp:MenuItem Text="Asia" Value="Asia" NavigateUrl="javascript: ZoomToLocationClient('Asia');"></asp:MenuItem>
12ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                                <asp:MenuItem Text="Africa" Value="Africa" NavigateUrl="javascript: ZoomToLocationClient('Africa');"></asp:MenuItem>
13ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                            </asp:MenuItem>
14ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        </Items>
15ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                        <StaticHoverStyle BackColor="#284E98" ForeColor="White" />
16ArcGIS.Server.9.2.DotNet自带例子分析(二、一)                    </asp:Menu>
8.实现上面菜单的javascript函数ZoomToLocationClient,在页面的结束处添加代码入下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)<form  id="form1" runat="server">
 2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)ArcGIS.Server.9.2.DotNet自带例子分析(二、一)ArcGIS.Server.9.2.DotNet自带例子分析(二、一).
 3>
9.Default.aspx切换到代码视图开始编写服务端的代码,实现无刷新必须实现System.Web.UI.ICallbackEventHandler接口,实现 ICallbackEventHandler接口就必须实现GetCallbackResult()和RaiseCallbackEvent(string eventArgument)这2个方法具体的代码和说明入下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)namespace Callback
 2
10.接下来要把服务端生成的脚本段sCallBackFunctionInvocation写入到页面中,Default.aspx切换到html视图在ZoomToLocationClient(val)方法中添加如下代码:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)//根据地名定位地图中心
 2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)        function ZoomToLocationClient(val)
 3        }
11.这样Menu控件通过调用ZoomToLocationClient(val)方法请求服务端进行处理然后把处理结果反馈给客户端,由客户端的processCallbackResult方法进行页面显示的更新,关于这个方法具体的可以参考ArcGIS.Server.9.2.DotNet自带例子分析(一)。
12.接下来在RaiseCallbackEvent(string eventArgs)方法中处理ZoomToLocationClient(val)方法发起的请求,具体代码如下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)//接收客户端的请求,根据请求字符串eventArgument不同做不同的处理
 2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)        public void RaiseCallbackEvent(string eventArgs)
 3        }
13.这样就完成了根据名称定位地图中心的功能,接下来根据输入的坐标重新定位地图的中心,首先Default.aspx切换到html视图在最后的javascript中在添加一个ZoomToPointClient()方法,具体的代码和说明如下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)//根据坐标定位地图中心
 2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)        function ZoomToPointClient()
 3 
14.在页面上添加2个input输入框,ID分别为TextBoxX和TextBoxY用来输入xy的坐标,在添加一个button来执行上面的ZoomToPointClient()方法。具体代码和说明如下:
1ArcGIS.Server.9.2.DotNet自带例子分析(二、一)X:<input type="text" id="TextBoxX" style="width: 72px; left: 71px; top: 473px" />
2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)Y:<input type="text" id="TextBoxY" style="width: 72px; left: 203px;top: 472px" />
3ArcGIS.Server.9.2.DotNet自带例子分析(二、一)<input type="button" value="Zoom To Point" onclick="ZoomToPointClient();" style="left: 318px; top: 470px; width: 150px" />
15.在服务端的RaiseCallbackEvent方法中添加对这个功能实现的代码,代码和说明如下:
 1ArcGIS.Server.9.2.DotNet自带例子分析(二、一) //接收客户端的请求,根据请求字符串eventArgument不同做不同的处理
 2ArcGIS.Server.9.2.DotNet自带例子分析(二、一)        public void RaiseCallbackEvent(string eventArgs)
 3
16.这样就完成了这个练习了,运行查看效果。
ArcGIS.Server.9.2.DotNet自带例子分析(二、一)

相关文章:

  • 2021-11-26
  • 2022-02-08
  • 2021-07-19
  • 2021-08-26
  • 2022-02-28
  • 2022-02-07
  • 2022-01-29
  • 2021-07-14
猜你喜欢
  • 2021-09-03
  • 2021-07-09
  • 2021-10-25
  • 2022-01-26
  • 2022-02-13
  • 2022-03-07
  • 2022-02-17
相关资源
相似解决方案