首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> GIS 专区 -> 文章内容 退出登录 用户管理
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· Mapbasic参考手册索...
· MapX应用开发中文讲...
相关文章
· ArcGIS在菜单中调用...
· [图文] Server Java开发--B...
· ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server Java...
· [图文] ArcGIS Server Java...
· ArcGIS Server Java...
· ArcGIS Server Java...
· [图文] ArcGIS Server Java...
· ArcGIS Server Java...
ArcGIS Server JAVA 讲座 自定义Functionality
作者:不详  来源:vscodes.com整理  发布时间:2007-6-29 15:23:56  发布人:Polaris

减小字体 增大字体

今天我们来讲讲如何自定义Functionality,自定义Functionality有很多用处。它最大的用处是可以访问数据源。我们来看看已经存在的Functionality
AGSMapFunctionality, AIMSMapFunctionality, AWSMapFunctionality, EJBMapFunctionality, WMSMapFunctionality等等等等,查看GISFunctionality接口的子类你可以看到ADF中更多的Functionality
这些Functionality无一不跟后台的资源有关。我们来看看Functionality接口的定义:
   


     
public void initFunctionality(GISResource arg0) {
                                                                                       }
public void destroyFunctionality() {
}
public GISResource getResource() {
return null;
}

   
     
   



每个functionality都需要实现Functionality这个接口,这个接口里面有三个方法,初始化方法,destroy方法和得到资源的方法。GISResource对应于一个特定的资源,比如我们最常用的资源就是AGSLocalMapResource当然也可以是ArcIMSResource,取决于你把这个functionality注册到哪个Resource中。我们来看一个例子,虽然Functionality一般跟资源有关,但是也可以做其它的事情,比如我们这里举一个非常简单的例子,FixedZoomin


public class DemoFunction implements GISFunctionality {

WebContext ctx;

public void zoomInFunction(){
        WebMap wmap = ctx.getWebMap();
WebExtent ext = wmap.getCurrentExtent();
   ext.expand(0.5);
wmap.setCurrentExtent(ext);
ctx.refresh();
}

public void initFunctionality(GISResource arg0) {
ctx=arg0.getWebContext();
System.out.print("Demo Function inited");
}

public void destroyFunctionality() {
System.out.print("Demo Function destroyed");
}

public GISResource getResource() {
return null;
}

}


非常简单的一个例子,从GISResource里面得到WebContext,然后得到WebMap,修改WebMapExtent,放大功能就实现了。你说非得跟资源有关系,那么确实也有点关系,因为我们还是使用了后台的数据来进行操作。需要说明的是,我们这个代码对于所有的Resource都是适用的,不管你后台使用了ArcIMS,还是其它的ResourceADF的妙处也在这里。
写好了这个Funcionality,那么我们来看看如何部署的,每一个Functionality都需要部署到某个Resource中,那么我来看一下,这个functionality如何来部署:



<managed-bean>
     
<managed-bean-name>ags1</managed-bean-name>
        <managed-bean-class>com.esri.adf.web.ags.data.AGSLocalMapResource</managed-bean-class>
<managed-bean-scope>none</managed-bean-scope>

<managed-property>

<property-name>functionalities</property-name>
<map-entries>
    <!--……略去其它的functionality->

<map-entry>
       <key>demoFunction</key>
<value>#{demoFunction}</value>
    </map-entry>
</map-entries>
</managed-property>
</managed-bean>


部署完成了,如何使用呢?随便在你的一个tools里面,或者task的运行代码里面,添加下面的代码:


GISResource rec=(GISResource)evt.getWebContext().getResources().get("ags1");
DemoFunction df=(DemoFunction)rec.getFunctionality("demoFunction");
df.zoomInFunction();




就可以了。这只是一个简单的例子,而且是绕了一个远的例子。大家可以发掘一下Functionlity的使用方法。在下一次讲座中,我们将详细解释一个对Resource进行操作的例子。

End of《ArcGIS Server JAVA 讲座 自定义Functionality》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“ArcGIS Server JAVA 讲座 自定义Functionality”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.