目的:
1.arcgis server9.2 ADF实现动态设置Label标注功能,选择不同图层然后选择要作为Label显示的字段然后更新地图的Label。
准备工作:
1.用ArcGis Server Manager或者ArcCatalog发布一个叫usa的Map Service,并且把这个Service启动起来。
完成后的效果图:
开始:
1.新建名为LabelFieldSamples的ASP.NET Web应用程序,在页面上添加MapResourceManager1、Map1控件。
2.为MapResourceManager1控件添加MapResourceItem,由上到下分别为,(usa的Map Service)名称为:worldCities、DataSourceType:ArcGIS Server Local。
3.按着上图设置好Map1控件,在页面的右边添加2个<div id="layer"></div>和<div id="field"></div>用来显示图层选择列表和字段选择列表,加一个input 的按钮并且添加onclick事件用来实现按钮功能。具体html代码如下:
1
图层:
<
div
id
="layer"
></
div
>
2
<
br
/>
3
字段:
<
div
id
="field"
></
div
>
4
<
br
/>
5
<
input
id
="Button1"
type
="button"
value
="显示Label"
onclick
="showLabel()"
/>
4.界面工作完成后接下来首先完成图层列表选择和字段列表选择的功能,这里采用Ajax的无刷新方式,和以前所有的例子一样页面类实现ICallbackEventHandler的接口,具体代码如下:
图层:
<
div
id
="layer"
></
div
>
2
<
br
/>
3
字段:
<
div
id
="field"
></
div
>
4
<
br
/>
5
<
input
id
="Button1"
type
="button"
value
="显示Label"
onclick
="showLabel()"
/>
1
public
partial
class
_Default : System.Web.UI.Page, ICallbackEventHandler
2
{
3
//脚本段字符串
4
public string m_Callback;
5
protected void Page_Load(object sender, EventArgs e)
6
{
7
//生成脚本段字符串用来供客户端的js调用
8
m_Callback = Page.ClientScript.GetCallbackEventReference(Page, "argument", "processCallbackResult", "context", "processCallbackError", true);
9
}
10
11
ICallbackEventHandler 成员
25
26
private string RaiseCallbackEvent(string _callbackArg)
27
{
28
string v = "";
29
//代码待写
30
return v;
31
}
32
}
5.接下来页面切换到Html视图,要在页面载入的时候需要把图层列表取来进行显示所以在需要在body标签类添加onload函数:<body onload="pageLoad()">,这样在页面载入的时候就会执行pageLoad()的方法,接下来在head标签内添加pageLoad()方法,代码如下:
public
partial
class
_Default : System.Web.UI.Page, ICallbackEventHandler2
{
3
//脚本段字符串4
public string m_Callback;5
protected void Page_Load(object sender, EventArgs e)6
{
7
//生成脚本段字符串用来供客户端的js调用8
m_Callback = Page.ClientScript.GetCallbackEventReference(Page, "argument", "processCallbackResult", "context", "processCallbackError", true);9
}10

11
ICallbackEventHandler 成员25

26
private string RaiseCallbackEvent(string _callbackArg)27
{
28
string v = "";29
//代码待写30
return v;31
}32
}
1
<
script type
=
"
text/javascript
"
language
=
"
javascript
"
>
2
function
pageLoad()
3
{
4
var argument = "ControlID=Map1&ControlType=Map&Type=Layer";
5
var context = "Map";
6
var rv=<%= m_Callback %>;
7
eval(rv);
8
}
9
<
/
script>
6.这样当页面载入的时候会执行pageLoad()的方法想服务端请求获取图层列表,接下在需要在cs代码端处理这个获取图层列表的请求,切换到源代码视图修改private string RaiseCallbackEvent(string _callbackArg)这个方法的代码如下:
<
script type
=
"
text/javascript
"
language
=
"
javascript
"
>
2
function
pageLoad()3
{
4
var argument = "ControlID=Map1&ControlType=Map&Type=Layer";5
var context = "Map";6
var rv=<%= m_Callback %>;7
eval(rv);8
}
9
<
/
script>
1
private
string
RaiseCallbackEvent(
string
_callbackArg)
2
private
string
RaiseCallbackEvent(
string
_callbackArg)2

本教程详细介绍了如何在ArcGIS Server 9.2 ADF环境下,通过ASP.NET Web应用程序动态设置地图Label标注。首先,发布并启动Map Service,接着创建Web应用并添加MapResource1、Map1控件,通过Ajax无刷新方式实现图层和字段的选择列表。使用ICallbackEventHandler接口处理回调事件,动态获取图层和字段列表,实现选择图层后更新标注字段。最后,展示如何根据用户选择显示Label并刷新地图效果。


1367

被折叠的 条评论
为什么被折叠?



