zoukankan      html  css  js  c++  java
  • ArcGIS Server Java 自定义Functionality(转)

    在这个小节,我们去实现一个GISFunctionality去封装前面实现过的使地图放大5倍的功能。
    首先,当然是新建一个Functionality类并添加到ADF应用中去。前面我们经常通过直接编辑代码的方式去定义类和配置文件,这主要是为了帮助你理解ADF应用的配置和各个元素的相互关系。现在估计你也有一定了解了,我们也就尽量省事些,多使用ArcGIS的eclipse插件去完成这些工作吧。
    让我们打开eclipse的菜单【ArcGIS】-【Class Templates】-【Functionality】,在新建的窗口上填上我们希望实现的Functionality的包名、类名、实例化 Managed Bean的名称、注册到的Resource等,完成以后ADF会自动新建一个实现GISFunctionality接口的类,并把这个类实例化后注册到 ADF应用的配置文件中去。

    image

    图 26    通过ArcGIS的IDE插件添加自定义Functionality

    下面我们需要对新生成的这个Functionality类进行编码以实现自己的功能:
    public class Zoom5Functionality implements GISFunctionality
    {
        private GISResource resource;
        public void zoomIn5()
        {
            WebContext webContext = resource.getWebContext();
            webContext.getWebMap().getCurrentExtent().expand(0.2);
            webContext.refresh();
        }
        public void zoomOut5()
        {
            WebContext webContext = resource.getWebContext();
            webContext.getWebMap().getCurrentExtent().expand(5);
            webContext.refresh();
        }
        public void initFunctionality(GISResource resource){this.resource = resource;    }
        public void destroyFunctionality()    {}
        public GISResource getResource()    {return this.resource;}
    }
    这样,这个Zoom5Functionality就具有了两个功能:zoomIn5和zoomOut5,分别对应了放大地图5倍和缩小地图5倍。接下来就让我们在页面上放一个Command去调用Zoom5Functionality的zoomIn5功能:
    <a:command id="zoomIn"
               defaultImage="images/tasks/maptools/zoomin.png"
               hoverImage="images/tasks/maptools/zoominU.png"
               selectedImage="images/tasks/maptools/zoominD.png"
               clientPostBack="true" >
        <f:actionListener type="wuyf.ZoomInListener"/>
    </a:command>
    当然,服务器上还需要一个监听器去处理这个Command的请求,并实际去调用Zoom5Functionality的方法:
    public class ZoomInListener implements ActionListener
    {
        public void processAction(ActionEvent event) throws AbortProcessingException
        {
            WebContext webContext = WebUtil.getWebContext(event.getComponent());
            GISResource resource = webContext.getResourceById("agsws1");
            Zoom5Functionality functionality =
    (Zoom5Functionality)resource.getFunctionality("zoom5Functionality");
            functionality.zoomIn5();
        }
    }
    或许你会觉得这样做有点多此一举,简单的功能干嘛要做一个Functionality来封装一下呢——当然了,这主要是因为这里演示的这个功能实在是太简单了。如果你有复杂的逻辑需要封装,而且还想灵活地配置某些资源需要这个功能,某些资源则不需要,那么Functionality就可以帮你大忙了。
    这里还需要特别提一下的就是GISFunctionality的initFunctionality方法,这个方法在Functionality被初始化的时候调用,这个时候其实还可以对GISResource作一些操作,比如根据权限验证来选择需要显示的图层等等。

    本文转自:

    自定义一个地图放大5倍的Functionality【案例】

    其他相关链接:

    Server JAVA 讲座 自定义Functionality

    用自定义functionality实现用户权限控制

    自定义Functionality

  • 相关阅读:
    【凡尘】---react-redux---【react】
    React生命周期详解
    写文章很难,ai自动生成文章为你来排忧
    怎么用ai智能写作【智媒ai伪原创】快速写文章?
    给大家介绍个Seo伪原创工具吧,可以免费用的哈
    自媒体文章难写,在线伪原创文章生成就简单了
    内容创作难吗 不妨试试智媒ai伪原创
    Ai伪原创工具,轻松几秒出爆文
    什么AI写作软件靠谱,好用?
    分享个免费伪原创工具 关键词自动生成文章
  • 原文地址:https://www.cnblogs.com/myparamita/p/1644706.html
Copyright © 2011-2022 走看看